先讲一下对QT动态链接库的调用方法,主要包括: 1、显式链接DLL,调用DLL的全局函数,采用Qt的QLibrary方法 2、显示链接DLL,调用DLL中类对象、成员函数。(通过对象即可实现类成员函数的调用) ①用虚函数表的方法,这也是COM使用的方法,利用Qt的QLibrary技术调用; ②用GetProcAddress直接调用。 ③用Qt的QPluginLoader类直接调用生成的DLL插件类对象 3、隐式链接DLL:也是采用Qt的Qlibrary方法 关于这种三种方法,下面详细叙
QTableView类非常的方便让我们去操作数据库,直接像excel中操作数据一样,比较灵活,在以后的开发中会用的比较广泛。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来
qt对于操作数据库已经封装的非常完美,用起来非常简单,没有多大的难度,只需要引入相应的类库即可,对于增删查改的话只需要执行sql语句就行了,里面会介绍多种操作的方法。
//先发送文件头信息 文件名##文件大小 QString head = QString("%1##%2").arg(fileName).arg(fileSize); //发送头部信息 qint64 len = tcpSocket->write(head.toUtf8()); //如果len大于0,则头部信息发送成功 if(len > 0){ //发送真正 的文件信息 //防止tcp黏包信息 //需要通过定时器延时20
//启动 void Widget::on_buttonStart_clicked() { //启动定时器 //设置时间间隔100ms //每隔100毫秒,定时器myTimer自动触发timeout() //判断如果定时器没有启动,则启动 if(myTimer->isActive()){ return; } myTimer->start(10); } //停止 void Widget::on_buttonStop_clicked() {
//先读取对方发送的内容 char buf[1024] = {0}; //定义一个对象获取对方信息 QHostAddress cliAddr; quint16 port; //对方端口 qint64 len = udpSocket->readDatagram(buf,sizeof(buf), &cliAddr, &port); if(len > 0){ //字符串格式化 QString str = QString("[%1:%
setWindowTitle("服务器:8899"); //监听套接字,指定父对象,让其自动回收空间 this->tcpServer = new QTcpServer(this); //监听客户端的请求 this->tcpServer->listen(QHostAddress::Any,8899); connect(this->tcpServer, &QTcpServer::newConnection, [=](){ //取出建立好链接的套接字
绘图系统由 QPainter 完成具体的绘制操作,QPainter 类提供了大量高度优化的函数来完成 GUI 编程所需要的大部分绘制工作。它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,例如:点、线、矩形、弧形、饼状图、多边形、贝塞尔弧线等。此外,QPainter 也支持一些高级特性,例如反走样(针对文字和图形边缘)、像素混合、渐变填充和矢量路径等,QPainter 也支持线性变换,例如平移、旋转、缩放。
socket即套接字,用于描述地址和端口,是一个通信链的句柄。应用程序通过socket向网络发出请求或者回应。 sockets(套接字)编程有三种,流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM),原始套接字(SOCK_RAW);前两种较常用。基于TCP的socket编程是采用的流式套接字。