
Qt--常用类
随心小记
这个作者很懒,什么都没留下…
展开
-
QSize
QSize使用整型精度定义二维对象的大小构造函数:QSize()QSize(int width, int height);设置高度和宽度void setHeight(int height);void setWidth(int width);获取高度和密度int height();int width();转载 2017-05-17 20:32:31 · 3643 阅读 · 0 评论 -
深入浅出信号与槽
Qt中信号(SIGNAL)的本质信号只是一个特殊的成员函数声明 函数的返回值是void类型函数只能声明不能定义信号必须使用signals关键字进行声明 函数的访问属性自动被设置为protected只能通过emit关键字调用函数(发射信号)不可忽视的军规Qt类只能在头文件中声明信号与槽的原型应该完全相同槽函数的返回值必须是void类型槽函数可以像普通成员函数一样被调用信号与槽的转载 2017-08-25 21:40:06 · 246 阅读 · 0 评论 -
命令行参数的应用
每一个应用程序都能够接受命令行参数主窗口的状态参数:应用程序必须保存和恢复主窗口的状态参数 位置、大小。。。应用程序退出的过程:收到关闭事件执行关闭事件处理函数主窗口从屏幕上消失主窗口的析构函数执行。。。命令行参数的应用:在命令行启动GUI程序时传递参数操作系统关联方式 在文件被双击时,操作系统根据文件后缀选择应用程序将文件路径作为命令行参数启动应用程序一般而言:应用程序转载 2017-08-22 22:17:13 · 814 阅读 · 0 评论 -
应用程序打包和发布
可执行程序的正常运行需要外部库的支持Windows中可以使用Depends工具查看程序的库依赖Linux可以使用ldd(shell脚本)命令查看程序的库依赖应用程序对于执行环境可能存在依赖关系:环境变量,驱动程序,Java虚拟机如何在客户机器上部署程序的执行环境:开发一个专用的部署(安装)程序部署(安装)程序运行后自动部署执行环境转载 2017-08-22 23:07:47 · 895 阅读 · 0 评论 -
自定义模型类
QStandardItemModel是一个通用的模型类能够以任意的方式组织数据(线性,非线性)数据组织的基本单位为数据项(QStandardItem)每一个数据项能够存储多个具体数据(附件数据角色)每一个数据项能够对数据状态进行控制(可编辑,可选)QVariant:Qt中的变体类型,用于返回模型中的数据转载 2017-08-26 00:05:52 · 874 阅读 · 0 评论 -
模型视图中的委托
模型视图中的委托委托(Delegate)是视图中处理用户输入的部件视图可以设置委托对象用于处理用户输入委托对象负责创建和显示用户输入上下文 如:编辑框的创建和显示 委托中的关键函数createEditor 需要编辑数据时,创建编辑组件updateEditorGeometry 更新编辑器组件的大小setEditorData 通过索引从模型中获取数据setModelData转载 2017-08-27 11:14:12 · 297 阅读 · 0 评论 -
基础图形绘制
QPainter(Qt中的画家):能够绘制各种图形,拥有绘图所需的画笔(QPen),画刷(QBrush),字体(QFont)QPaintDevice(Qt中的画布):QPainter的绘图板,所有的QWidget类都继承自QPaintDevice重要规则:只能在QWidget::paintEvent中绘制图形void paintEvent(QPaintEvent* event){ QPai转载 2017-08-27 22:05:26 · 315 阅读 · 0 评论 -
图像处理与绘制
Qt图像类都继承自QPaintDeviceQPainter能够直接在图像上绘制图形QImage和QPixmap能够相互转换QImage:读取图像文件,直接进行像素级操作;内置简易图像处理相关算法QPixmap:最大限度利用硬件(显卡)加速,增强图像显示效果小结QImage适用于直接进行图像处理的场合QPixmap适用于在界面上显示图像的场合QPixmap能够对QImage图像进行转换Q转载 2017-08-28 11:34:26 · 318 阅读 · 0 评论 -
文本绘制技巧
QPainter拥有绘制文本的能力drawText(拥有多个重载形式)常见调用方式 p.drawText(10, 10, “D.T.Software”);p.drawText(0, 0 , 100 , 30, Qt::AlignCenter, “D.T.Software”)文本由小变大:在主窗口绘制文本(QWidget)将文本中心绘制于窗口中心(width()/2, height()/转载 2017-08-28 16:52:49 · 269 阅读 · 0 评论 -
登录对话框的改进
验证码机制随机产生验证码用户识别后填写判断用户识别的正确性随机数计算机无法产生真正意义上的随机数计算机只能模拟随机数序列(伪随机数)随机种子决定每次产生的随机序列是否相同qsrand(seed);设置随机数种子int n = qrand()%100;转载 2017-08-28 18:50:54 · 260 阅读 · 0 评论 -
进程与线程
进程:程序被加载到内存中执行后得到进程程序和进程的区别:程序是物理存储空间中的数据文件进程是内存中动态的运行实体联系一个程序可能对应多个进程一个进程可能包含多个程序值得注意:在当代操作系统中,资源分配的基本单位是进程;而CPU调度执行的基本单位是线程线程:进程内的一个执行单元操作系统中一个可调度的实体进程中相对独立的一个控制流序列执行时的现场数据和其他调度所需的信息深入理解转载 2017-08-28 23:29:30 · 322 阅读 · 0 评论 -
Qt中的多线程编程
Qt中通过QThread直接支持多线程QThread是一个跨平台的多线程解决方案QThread以简洁易用的方式实现多线程编程Qt中的线程是以对象的形式被创建和使用 每一个线程对应着一个QThread对象在工程开发中terminate()是禁止使用的!terminate会使得操作系统暴力终止线程,而不会考虑数据完整性,资源释放等问题转载 2017-08-29 00:32:03 · 316 阅读 · 0 评论 -
多线程间的同步
多线程编程的本质并发性是多线程编程的本质在宏观上,所有线程并行执行多个线程间相对独立,互不干涉同步:在特殊情况下,控制多线程间的相对执行顺序QThread类直接支持线程间的同步转载 2017-08-29 23:42:28 · 202 阅读 · 0 评论 -
多线程间的互斥
临界资源每次只允许一个线程进行访问(读/写)的资源线程间的互斥(竞争)多个线程在同一时刻都需要访问临界资源QMutex类是一把线程锁,保证线程间的互斥利用线程锁能够保证临界资源的安全性小结临界资源每次只允许一个线程进行访问(读/写)线程锁(QMutex)用于保护临界资源线程只有获取锁之后才能访问临界资源锁被其他线程获取时,当前线程进入等待状态线程锁的获取和释放必须在同一个线程中转载 2017-08-29 23:53:17 · 667 阅读 · 0 评论 -
多线程中的信号与槽
如果程序中有多个线程,槽函数在哪个线程中执行? 只要函数体中没有访问临界资源的代码,同一个函数可以被多个线程同时调用,且不会产生任何副作用研究槽函数的具体执行线程意义:当信号的发送与对应槽函数的执行在不同线程中时,可能产生临界资源的竞争问题无论事件循环是否开启,信号发送后会直接进入对象所依附线程的事件队列;然而,只有开启了事件循环,对应的槽函数才会在线程中被调用什么时候需要在线程中开启事件循环?转载 2017-08-31 20:36:22 · 3549 阅读 · 0 评论 -
信号与槽的连接方式
信号与槽的连接方式决定槽函数调用时候的相关行为转载 2017-09-01 10:03:43 · 512 阅读 · 0 评论 -
线程的生命期问题
C++对象有生命周期; 线程也有生命周期; QThread对象的生命周期与对应的线程生命周期是否一致?转载 2017-09-01 10:46:15 · 282 阅读 · 0 评论 -
另一种创建线程的方式
如何灵活的指定一个线程对象的线程入口函数?转载 2017-09-01 12:08:58 · 189 阅读 · 0 评论 -
模型视图设计模式
模型视图设计模式的核心思想:模型(数据)与视图(显示)相分离模型对外提供标准接口存取数据视图自定义数据的显示方式工作机制:当数据发生改变时 模型发出信号通知视图当用户与视图进行交互时 视图发出信号提供交互信息在Qt中,不管模型以什么结构组织数据,都必须为每一个数据提供独立无二的索引;视图通过索引访问模型中的具体数据 模型索引是数据与视图分离的重要机制模型中的数据使用唯一的索引来访转载 2017-08-25 00:00:48 · 2227 阅读 · 0 评论 -
程序中的配置文件
1、程序退出前保存状态参数到文件(数据库) 2、程序再次启动时读出状态参数并恢复转载 2017-08-22 16:48:54 · 897 阅读 · 0 评论 -
图形绘制
QPainterQt中的画家拥有绘图所需的画笔(QPen),画刷(QBrush),字体(QFont)QPaintDeviceQt中的画布,QPainter的绘图板所有的QWidget类都继承自QPaintDeviceQPen用于绘制几个图形的边缘,由颜色、宽度和线风格等参数组成QBrush用于填充几何图形的调色板,由颜色和填充风格组成QFont用于文本绘制,由字体属性组成重点转载 2017-05-18 22:48:46 · 261 阅读 · 0 评论 -
窗口部件及窗口类型
命令行:qmake -projctqmakemakeLog调试法: 在代码中加入一定的打印语句 打印程序状态和关键变量的值 断点调试法 在开发环境中的对应代码行加上断点 当程序运行到断点行时,程序暂停运行 需要时可加上条件断点,当条件满足时才暂停程序的运行图形用户界面由不同的窗口和窗口组件构成< QtGui >头文件包含窗口组件,对应Q转载 2017-07-13 17:54:14 · 3066 阅读 · 0 评论 -
软件开发流程
软件开发流程通过一系列步骤保证软件产品的顺利完成软件产品在生命期内的管理方法学本质开发流程与具体技术无关开发流程是开发团队必须遵守的规则转载 2017-07-16 23:38:21 · 260 阅读 · 0 评论 -
Qt中的文件操作
Qt中IO操作的处理方式Qt通过统一的接口简化了文件与外部设备的操作方式Qt中的文件被看做一种特殊的外部设备Qt中的文件操作与外部设备的操作相同IO操作中的关键函数接口打开设备:bool open(OpenMode mode)读取数据:QByteArray read(qint64 maxSize)写入数据:qint64 write(const QByteArray& byteArray转载 2017-07-17 09:54:17 · 3513 阅读 · 0 评论 -
QMap和QHash
QMap是一个以升序键顺序存储键值对的数据结构QMap原型为class QMap转载 2017-07-21 22:50:27 · 628 阅读 · 0 评论 -
拖放事件
拖放一个文件进入窗口时将触发拖放事件每一个QWidget对象都能处理拖放事件拖放事件的处理函数: void dragEnterEvent(QDragEnterEvent* e); //拖void dropEvent(QDropEvent* e); //放拖放事件中的MineDataQMimeData是Qt中的多媒体数据类拖放事件通过QMimeData对象传递数据QMimeData支持转载 2017-07-22 10:43:43 · 229 阅读 · 0 评论 -
Qt中的事件处理
图形界面应用程序的消息处理模型 操作系统发送的消息如何转为Qt中的信号?Qt平台将系统产生的消息转换为Qt事件 Qt事件是一个QEvent的对象Qt事件用于描述程序内部或者外部发生的动作任意的QObject对象都具备事件处理能力GUI应用程序的事件处理方式Qt事件产生后立即被分到QWidget对象QWidget中的event(QEvent*)进行事件处理event()根据事件类型调转载 2017-07-22 07:46:45 · 501 阅读 · 0 评论 -
文本编辑器
ConstructinitMenuBarinitFileMenuinitEditMenuinitFormatMenuinitViewMenuinitHelpMenuinitToolBarinitFileToolIteminitEditToolIteminitFormatToolIteminitViewToolIteminitStatusBarinitMainEditorLin转载 2017-07-16 21:11:47 · 223 阅读 · 0 评论 -
文本打印和光标定位
QPlainTextEdit通过QTextDocument对象存储文本数据 QPlainTextEdit本身只负责界面形态的显示 QTextDocument是表示文本以及文本属性的数据类打印功能的实现步骤:连接QAction打印对象的信号到槽函数在槽函数中定义QPrintDialog对象根据用户选择获取QPrinter对象通过QTextDocument对象进行打印如何计算编辑框中光标的转载 2017-08-20 10:36:10 · 739 阅读 · 0 评论 -
发送自定义事件
Qt中可以在程序中自主发送事件阻塞型事件发送非阻塞型事件发送QApplication类提供了支持事件发送的静态成员函数阻塞型发送函数bool sendEvent(QObject* receiver, QEvent* event);非阻塞型发送函数void postEvent(QObject* receiver,QEvent* event);菜单栏中删除功能的实现定义事件对象KeyPress转载 2017-08-20 14:44:16 · 357 阅读 · 0 评论 -
查找对话框
开发一个可以在不同项目间复用的查找对话框查找对话框的界面通过布局管理器相互嵌套完成查找功能的核心思想:获取当前光标的位置并作为起始点向后(向前)查找目标第一次出现的位置通过目标位置以及目标长度在文本框进行标记QString类中提供了子串查找的相关函数indexOf:从指定位置向后查找目标子串的下标位置lastIndexOf:从指定位置向前查找子串的下标位置Qt中的光标信息类QTextC转载 2017-08-20 16:37:10 · 1336 阅读 · 0 评论 -
Qt中的调色板
QPalette转载 2017-08-21 15:53:21 · 707 阅读 · 0 评论 -
替换对话框
替换对话框转载 2017-08-21 19:53:52 · 245 阅读 · 0 评论 -
编辑交互功能
编辑器常见的编辑交互功能:复制、粘贴、剪切、撤销、重做和删除不是什么时候都能粘贴、复制!QPlainTextEdit能够发送与界面状态相关的信号void copyAvailable(bool yes);void redoAvailable(bool available);void undoAvailable(bool available);void cursorPositionChanged转载 2017-08-14 22:30:44 · 823 阅读 · 0 评论 -
Qt中的多页面切换组件
QTabWidget能够在同一窗口中自由切换不同页面的内容是一个容器类型的组 件,同时提供友好的页面切换方式小贴士:在QTabWidget对象中加入一个组件将生成一个新的页面QTabWidget对象每次只能加入一个QWidget对象解决方案:创建容器类型的组件对象将多个子组件在容器对象中布局将容器对象加入QTabWidget中生成新的页面转载 2017-08-24 19:31:23 · 805 阅读 · 0 评论 -
关于对话框
关于对话框的创建转载 2017-08-21 21:54:55 · 462 阅读 · 0 评论 -
行间跳转
算法设计:通过输入对话框获取目标行号查找换行符的位置计算目标行第一个字符的下标通过QTextCursor定位目标行工具栏和状态栏的可见性通过setVisible()设置可见性更新界面上QAction对象的状态 菜单中的QAction对象是否勾选工具栏中的QAction对象是否按下转载 2017-08-21 21:47:04 · 220 阅读 · 0 评论 -
多线程与界面组件的通信
是否可以在子线程中创建界面组件?子线程如何对界面组件进行更新?子线程能够更改界面组件状态的本质是什么? 另一种可以间接让子线程更新界面组件的状态的方式转载 2017-09-01 18:53:53 · 412 阅读 · 0 评论