随笔分类 - QT基础知识
摘要:例子解析: 连接数据库,将数据库的数据映射到设计器,可以在设计器中进行买卖操作,或添加车辆。确定后更新到数据库,右方显示卖车记录。 数据库数据 用于厂家的组合框 用于各数据的查询,通过厂家和品牌为标识 源代码: mainwindow.h #ifndef MAINWINDOW_H #define MA
阅读全文
摘要:Xml源代码 domxml.h #ifndef DOMXML_H #define DOMXML_H #include <QString> #include <QStringList> #include <QDomDocument> //文件 #include <QDomProcessingInstr
阅读全文
摘要:XML(可扩展标记语言)是一种用于记录多种数据类型的标记语言。使用XML可以将各类型的文档定义为容易读取的格式,便于用户读取。而且,在应用程序中使用XML,可以轻松实现数据交换。 QT中提供两种访问XML文档的方式:DOM和SAX。 DOM方式:将XML文档转换为树形结果存储到内存中,再进行读取,消
阅读全文
摘要:Qt的应用程序编译出来之后,将单独的exe程序拿到其他PC上运行是运行不起来的,会提示缺少对应的动态链接库。我们需要去Qt的安装目录下找到所有的Qt程序运行时所依赖的,将他们和exe程序放到同一目录下,程序才可以执行。 根据上边的描述我们可以想象的到,如果手动去寻找应用程序依赖的动态库,这是一件非常
阅读全文
摘要:前面介绍了数据库都是要使用SQL语句,并在显示方面不方便,不够直观反映数据。 上节介绍一个模型,可以直接利用该模型连接数据库,可以在QT的可视化界面TabView直接对数据库进行操作,并且不需要使用SQL语句。 思路: 1.按照前面的方式,选择数据库的类型,打开数据库 QSqlDatabase db
阅读全文
摘要:前面使用 SQL 语句完成了对数据库的常规操作,包括简单的 CREATE、SELECT 等语句的使用。我们也提到过,Qt 不仅提供了这种使用 SQL 语句的方式,还提供了一种基于模型的更高级的处理方式。这种基于QSqlTableModel 的模型处理更为高级,如果对 SQL 语句不熟悉,并且不需要很
阅读全文
摘要:sqlite,本地数据库。主要运用在小型的程序,传送方便(如发送附带数据库的程序,但MySQL有点大,或许没安装)。 如何创建本地数据库? 1.新建一个.txt的文本文件。 2.直接将后缀名有.txt改为.db即可。 思路和用法与前面的MySQL一样,连接上有点区别,其他一样。 1.连接数据库的类型
阅读全文
摘要:数据库的创建、添加、修改、查询、删除都是利用SQL语句和类QSqlQuery的结合。 QSqlDatabase::database()。可返回当前正在打开的数据库对象。 数据库的删除 //获取删除的名字 QString strName=ui->lineEdit->text(); //开始事务 QSq
阅读全文
摘要:上一节讲了数据库的连接,本例直接将数据库的插入操作,重点还是QSqlQuery类 QSqlQuery query; //新建二维表 query.exec("CREATE TABLE student(id INT AUTO_INCREMENT PRIMARY KEY,sname VARCHAR(10)
阅读全文
摘要:Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作。这里我们所说的“平台独立”,既包括操作系统平台,有包括各个数据库平台。另外,我们强调了“基于 SQL”,因为 NoSQL 数据库至今没有一个通用查询方法,所以不可能提供一种通用的 NoSQL 数据库的操作。Qt 的数据库操作还
阅读全文
摘要:多线程绘图 前面见过Image绘图设备可以运用在线程中。 本例子。在线程中随机画出一个多边形,通过信号将图片发出,在主线程中接受该图片,并在绘图事件中绘制。 在窗口中有一个按钮,当点击按钮之后,在线程中绘制一张图片,然后将绘制好的图片显示到当前窗口中。 子线程随机画图解析 class MyThrea
阅读全文
摘要:前一节介绍了线程的创建,把一个线程单独作为一类且是继承Qthread,当中也只有一个线程处理函数。很大的弊端。 因此,在Qt4.7及以后版本推荐使用以下的工作方式。其主要特点就是利用Qt的事件驱动特性,将需要在子线程中处理的业务放在独立的模块(类)中,由主线程创建完该对象后,将其移交给指定的线程,且
阅读全文
摘要:通常情况下,应用程序都是在一个线程中执行操作。但是,当调用一个耗时操作(例如,大批量I/O或大量矩阵变换等CPU密集操作)时,用户界面常常会冻结。而使用多线程可以解决这一问题。 多线程有以下几个优势: 1.提高应用程序响应速度。这对于图形界面开发的程序尤为重要,当一个操作耗时很长时,整个系统都会等待
阅读全文
摘要:前面介绍了TCP和UDP的通信,只是文体通信,只能传送文字。本次介绍文件传输,也就是文件读写和TCP通信的结合。 解析:根据之前的TCP通信,建立彼此的连接。服务器选择文件,首先将文件的基本信息发送给客户端。如:文件名,文件大小(用于进度条使用)。如上显示,“head#hello#1024”,即头部
阅读全文
摘要:前面介绍过定时器事件(QTimerEvent),有个弊端,就是每启动一个定时器都要对应的ID。本次介绍在设计器中使用Qtimer。 首先在设计器中添加一个LCD Number,和两个按钮。 头文件 #include <QTimer> QTimer *timer; 按钮添加对应的槽函数,如下: //开
阅读全文
摘要:使用Qt提供的QUdpSocket进行UDP通信。在UDP方式下,客户端并不与服务器建立连接,它只负责调用发送函数向服务器发送数据。类似的服务器也不从客户端接收连接,只负责调用接收函数,等待来自客户端的数据的到达。 解析:UDP无需确认对方是否在线,是否能收到。因此服务端也不需要设置监听套接字。双发
阅读全文
摘要:.pro 文件中加入:QT+=network 在Qt中实现TCP/IP服务器端通信的流程: 1.创建监听套接字,QTcpServer 2.将监听套接字设置为监听模式, listen 3.等待并接受客户端请求,可以通过QTcpServer提供的void newConnection()信号来检测是否有连
阅读全文
摘要:前面介绍了基本文件操作、数据流文件操作和文本文件操作。本次简单介绍内存文件操作。内存文件本质就是建立一块公共内存区域,可以往里读、写。 下面我们使用一段代码来看看QBuffer的有关操作: QBuffer memFile(); //内存文件对象 //打开 bool bIsOk=memFile.ope
阅读全文
摘要:学习了事件、绘图。做个练习,在窗口画出一个棋盘,鼠标点下的格子显示图片 源代码: widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QPaintEvent> #include <QMouseEvent> n
阅读全文
摘要:QDataStream提供了基于QIODevice的二进制数据的序列化。数据流是一种二进制流,这种流完全不依赖于底层操作系统、CPU 或者字节顺序(大端或小端)。例如,在安装了 Windows 平台的 PC 上面写入的一个数据流,可以不经过任何处理,直接拿到运行了 Solaris 的 SPARC 机
阅读全文