
Qt基础
Qiuery
好好学习,天天向上。为自己代言,做想要的自己。因为无知,所以挑战,因为挑战,所有了解,因为了解,所以理智,因为理智,所以成熟。试了才知道,潜力在于挖掘。
展开
-
Qt 笔记:多线程中的信号与槽(下)
如果线程体函数中开启了事件循环,线程如何正常结束?QThread::exec()使得线程进入事件循环-事件循环结束前,exec()后的语句无法执行-quit() 和 exit() 函数用于结束事件循环-quit() <--> exit(0) ,exec() 的返回值有exit() 参数决定ps:无论事件循环是否开启,信号发送后悔直接进行入对象所依附线程的事件队列;然...原创 2018-10-10 16:54:39 · 1612 阅读 · 1 评论 -
Qt 笔记:文本绘制技巧
QPainter拥有绘制文本的能力-drawText(拥有多个重载形式)-常见调用方式p.drawText(10,10,"D.T.Software");在坐标(10,10)处绘制文本p.drawText(0,0,100,30,Qt::AlignCenter,"D.T.Software");在矩形范围(0,0,100,30)中以居中对齐的方式绘制文本文本绘制参数-字体(Q...原创 2018-09-27 09:28:53 · 1032 阅读 · 0 评论 -
Qt 笔记:多线程与界面组件的通信(上)
是否可以在子线程中创建界面组件?class TestThread : public QThread{ Q_OBJECTprotected: void run() { QWidget w; w.show(); exec(); }}子线程如何对界面组件进行更新?解...原创 2018-10-11 19:33:47 · 1238 阅读 · 0 评论 -
Qt 笔记:另一种创建线程的方式
class QThread :public Qt{ // ....... // .......protected: virtual void run() = 0; // ....... // .......};ps:面向对象程序设计实践的早起,工程中习惯于通过继承的方式扩展系统的功能。参考准则:·尽量使用组合的方式实现系统功能·代...原创 2018-10-11 17:29:07 · 124 阅读 · 0 评论 -
Qt 笔记:图像处理与绘制
设备无关图像类-QImage-独立于具体硬件的图像类-主要用于读写图像文件,针对IO访问而设计-能够直接在像素级对图像进行处理设备相关图像类-QPixmap-依赖于具体硬件的图像类-主要是用于绘图,针对屏幕显示而设计-显示效果依赖于所在平台的绘图引擎(不可移植)·Qt图像类都继承自QPaintDevice·QPainter能够直接在图像上绘制图形·QImag...原创 2018-09-26 19:14:52 · 714 阅读 · 0 评论 -
Qt 笔记:线程的生命期问题
C++对象有声明周期;线程也有声明周期;QThread对象的生命周期与对应的线程声明周期是否一致?线程对象生命周期 > 对应的线程声明周期 同步型线程设计-概念·线程对象主动等待线程生命期结束后才销毁-特点·同时支持栈和堆中创建线程对象·对象销毁时确保线程生命期结束-要点·在析构函数中先调用wait()函数,强制等到线程运行结束-使用场合...原创 2018-10-11 14:40:27 · 400 阅读 · 0 评论 -
Qt 笔记:基础图形绘制(下)
综合实例开发:简易绘图程序-功能需求:·自由图形绘制·基本图形绘制(直线,矩形,椭圆)·能够选择图形绘制颜色界面解决方案-以QWidget为基类创建绘图主窗口-使用QGroupBox创建图形设置区域-使用单选按钮QRadioBox实现目标图形的选择-使用组合框QCombox实现绘图颜色的选择自由绘图解决方案-以鼠标按下为开始,记录开始坐标·mouse...原创 2018-09-26 17:05:58 · 284 阅读 · 0 评论 -
Qt 笔记:信号与槽的连接方式
深入信号与槽的连接方式-Qt::DirectConnection(立即调用)-Qt::QueuedConnection(异步调用)-Qt::BlockingQueuedConnection(同步调用)-Qt::AutoConnection(默认连接)-Qt::UniqueConnection(单一连接)bool connect(const QObject* sender,...原创 2018-10-11 12:00:19 · 1059 阅读 · 0 评论 -
Qt 笔记:基础图形绘制(中)
Qt图形系统中的坐标系-物理坐标系(设备坐标系)·原点(0,0)在左上角的位置,单位:像素(点)·x坐标向右增长,y坐标向下增长-逻辑坐标系·数学模型中的抽象坐标系,单位由具体问题决定·坐标轴的增长方向由具体问题决定事实-QPainter使用逻辑坐标系绘制图形-逻辑坐标系中图形的大小和位置经由转换后绘制与具体设备-默认情况下的逻辑坐标系与物理坐标系完全一致...原创 2018-09-26 15:25:39 · 503 阅读 · 0 评论 -
Qt 笔记:登入对话框的改进
关于验证码和恶意程序-自动测试原理·利用一些特殊的系统函数能够通过代码控制程序,从而模拟用户操作-恶意程序·使用自动测试原理对目标程序进行控制,从而盗取信息或进行攻击-验证码·随机产生,用户容易识别,程序难以识别,从而有效避免恶意攻击需要注意的问题-验证码必须动态随机产生-验证码的显示避开使用标准组件(标签,文本框,等)-验证码应该附带足够多的障碍增加程序识...原创 2018-09-27 11:01:45 · 160 阅读 · 0 评论 -
Qt 笔记:自定义模板类
QStandardItemModel是一个通用的模型类-能够以任意的方式组织数据(线性,非线性)-数据组织的基本单位为数据项(QStandardItem)-每一个数据项能够存储多个具体数据(附加数据角色)-每一个数据项能够对数据状态进行控制(可编辑,可选,...)Qt中的通用模型类QStandardItemModel Qt中的变体类型QVariant-QVarian...原创 2018-09-21 17:48:10 · 4619 阅读 · 0 评论 -
Qt 笔记:多线程中的信号与槽(中)
当槽函数是线程类中的成员时,为什么依然不在本线程内被调用执行?问题-对象依附于哪一个线程?·默认情况下,对象依附于自身被创建的线程;例如:对象在主线程(main()函数)中被创建,则依附于主线程。-对象的依附性与槽函数执行的关系?默认情况,槽函数在其所依附的线程中被调用执行!-对象的依附性是否可以改变?QObject::moveToThread用于改变对象的线程依附性,...原创 2018-10-10 15:30:56 · 662 阅读 · 0 评论 -
Qt 笔记:多线程中的信号与槽(上)
线程对象是否可以发射信号(signal)?是否可以定义槽函数(slot)?QThread类拥有发射信号和定义槽函数的能力-关键信号:·void started~线程开始运行时发射该信号·void finished()~线程完成运行时发射该信号·void terminated()~线程被异常终止时发射该信号如果程序中有多个线程,槽函数是在那个线程中执行的?...原创 2018-10-10 14:24:36 · 730 阅读 · 0 评论 -
Qt 笔记:多线程间的互斥(下)
线程的死锁概念-线程间相互等待临界资源而造成批次无法继续执行发生死锁的条件-系统中存在多个临界资源且临界资源不可抢占-线程需要多个临界资源才能继续执行#include <QCoreApplication>#include <QThread>#include <QDebug>#include <QMutex>QMutex...原创 2018-10-09 17:35:45 · 352 阅读 · 0 评论 -
Qt 笔记:多线程间的互斥(上)
生产消费者问题-有n个生产者同时制造产品,并把产品存入仓库中-有m个消费者同时需要从仓库中取出产品-规则:·当仓库未满,任意生产者可以存入产品·当仓库未空,任意消费者可以取出产品#include <QCoreApplication>#include <QThread>#include <QDebug>static QString...原创 2018-10-09 10:08:23 · 405 阅读 · 0 评论 -
Qt 笔记:多线程间的同步
多线程编程的本质是什么?-并发性是多线程编程的本质-在宏观上,所有线程并行执行-多个线程间相对独立,互不干涉 同步的概念-在特殊情况下,控制多线程间的相对执行顺序QThread类直接支持线程间的同步-bool QThread::wait(unsigned long time = ULONG_MAX) qDebug() << "begin" ; ...原创 2018-10-08 17:26:27 · 187 阅读 · 0 评论 -
Qt 笔记:Qt中的多线程编程
Qt中通过QThread直接支持多线程-QThread是一个跨平台的多线程解决方案-QThread以简洁易用的方式实现多线程编程ps:Qt中的线程以对象的形式被创建和使用,每一个线程对应着一个QThread对象.QThread中的关键成员函数-void run()·线程体函数,用于定义线程功能(执行流)-void start()·启动函数,将线程入口地址设置为run...原创 2018-10-08 15:42:51 · 705 阅读 · 0 评论 -
Qt:笔记:多线程与界面组件的通信(下)
子线程能够更改界面组件状态的本质是什么?-子线程发射信号通知主线程界面更新请求;主线程根据具体信号遗迹信号参数对界面组件进行修改。是否有其他间接的方式可以让子线程更新界面组件的状态?解决方案 - 发送自定义事件-自定义事件类用于描述界面更新细节-在主窗口类中重写事件处理函数event-使用postEvent函数(异步方式)发送自定义事件类对象·子线程指定接受消息的对象为...原创 2018-10-12 09:39:19 · 905 阅读 · 0 评论 -
Qt 笔记:进程与线程的概念
程序是计算机存储系统中的数据文件-源代码程序·文本文件,描述程序行为和功能-可执行程序·二进制文件,直接加载并执行进程的概念-广义概念·程序关于某个数据集合的一次运动活动-狭义概念·程序被加载到内存中执行后得到进程程序和进程的联系-一个程序可能对应多个进程·一个程序多次运行,每次运行产生一个进程-一个进程可能包含多个程序·一个程序依赖多个其他...原创 2018-09-27 11:48:42 · 1020 阅读 · 0 评论 -
Qt 笔记:基础图形绘制(上)
Qt图形系统中的关键角色-QPainter·Qt中的画家,能够绘制个钟基础图形·拥有绘制所需的画笔(QPen),画刷(QBrush),字体(QFont)-QPaintDevice·Qt中的画布,画家(QPainter)的绘图板·所有QWidget类都继承自QPaintDeivce画家(QPainter)所使用的工具角色-QPen·用于绘制几何图形的边缘,由颜色,...原创 2018-09-26 12:01:00 · 391 阅读 · 0 评论 -
Qt 笔记:多页面切换组件
Qt中多页面切换组件QTabWidget-能够在同一个窗口中自由切换不同页面的内容-是一个容器类型的组件,同时提供友好的页面切换方式QTabWidget的使用方式-在应用程序中创建QTabWidget的对象-将其他QWidget对象加入该对象中ps:-在QTabWidget对象中加入一个组件将生成一个新的页面-QTabWidget对象每次只能加入一个QWidget对...原创 2018-09-20 17:36:32 · 1112 阅读 · 0 评论 -
Qt 笔记:打包与发布
调试版的可执行程序-包含于调试相关的各种信息,体积巨大-执行速度慢,支持断点调试发布版的可执行程序-无任何冗余信息,体积小巧-执行速度快,无法映射到源码调试·可执行程序的正常运行需要外部库的支持·因此:-发布程序时必须保证所有的依赖库都存在Windows中可以使用Depends工具查看程序的库一来Depends官网网址:-http://www.depen...原创 2018-09-20 16:21:32 · 178 阅读 · 0 评论 -
Qt 笔记:发送自定义事件
Qt中可以在程序中自主发送事件-阻塞型事件发送·事件发送后需要等待事件处理完成-非阻塞型事件发送·事件发送后立即返回·事件被发送到事件队列中等待处理QApplication类提供了支持事件发送的静态成员函数-阻塞型发送函数:·bool sendEvent(QObject* receiver,QEvent* event);-非阻塞型发送函数:·void pos...原创 2018-09-19 14:28:41 · 1043 阅读 · 1 评论 -
Qt 笔记: QWidget,QDialog
QWidget类继承自QObject类和QpaintDevice类 - QObject是所有支持Qt对象模型的基类 - QPaintDevice是Qt中所有可绘制组件的基类QWidget能够绘制自己和处理用户的输入 -QWidget是Qt中所有窗口组件类的父类(super class) -QWidget是所有窗口组件的抽象 -Qt中的每个窗口组件都是一个QWidget -QWidg...原创 2018-09-14 09:29:45 · 1583 阅读 · 0 评论 -
Qt 笔记:文件打印与光标定位
QPlainTextEdit内部的文档结构-QPlainTextEdit通过QTextDocument 对象存储文本数据-QPlainTextEdit本身值负责界面形态的显示QTextDocument是表示文本以及文本属性的数据类-设置文本的属性:排版,字体,标题,等-获取文本参数:行数,文本宽度,文本信息,等-实现标准操作:撤销,重做,查找,打印,等打印功能的实现...原创 2018-09-18 19:30:32 · 952 阅读 · 0 评论 -
Qt 笔记:拖放事件
·拖放一个文件进入窗口是将触发拖放事件·每一个QWidget对象都能够处理拖放事件·拖放事件的处理函数为-void dragEnterEvent(QDragEnterEvent* e);-void dropEvent(QDropEvent* e);拖放事件中的QMimeData-QMimeData 是 Qt 中的多媒体数据类-拖放事件通过QMimeData 对象传递数据...原创 2018-09-18 16:21:27 · 915 阅读 · 0 评论 -
Qt 笔记:事件处理(下)
事件被组件对象处理后可能传递到其父组件对象QEvent中的关键成员函数-void ignore();·接收者忽略当前事件,事件可能传递给父组件-void accept();·接收者期望处理当前事件-bool isAccepted();·判断当前事件是否被处理Qt中的事件过滤器-事件过滤器可以对其他组件接收到的事件进行监控-任意的QObject对象都可以作为事...原创 2018-09-18 15:19:41 · 166 阅读 · 0 评论 -
Qt 笔记:事件处理(上)
Qt消息处理模型 Qt平台将系统产生的消息转换为Qt事件-Qt事件是一个QEvent的对象-Qt事件用于描述程序内存的外部发生的动作-任意的QObject对象都具备处理事件的能力 GUI应用程序的事件处理方式-Qt事件产生后立即被分发到QWidget对象-QWidget 中的event(QEvent*)进行事件处理-event()根据事件类型调用不同的事件处...原创 2018-09-18 11:26:09 · 191 阅读 · 0 评论 -
Qt 笔记:QMap与QHash
QMap是一个以升序键顺序存储键值对的数据结构-QMap原型为class QMap<K,T>模板-QMap中键值对根据Key进行了排序-QMap中Key类型必须重载operator <QMap<QString, int> map;map.insert("key 2", 2);map.insert("key 0", 0);map.insert(...原创 2018-09-18 09:51:59 · 1119 阅读 · 0 评论 -
Qt 笔记:缓冲区操作与目录操作
Qt中缓冲区的概念-缓冲区的本质为一段连续的存储空间-QBuffer是Qt中缓冲区相关的类-在Qt中可以将缓冲区看做一种特殊的IO设备-文件流辅助类可以直接用于操作缓冲区QByteArray array;QBuffer buffer(&array);if(buffer.open(QIODevice::WriteOnly)){ QDataStram ou...原创 2018-09-17 15:10:46 · 1629 阅读 · 0 评论 -
Qt 笔记 : 标准对话框
Qt为开发者提供了一些可复用的对话框类型 Qt提供的可复用对话框全部继承自QDialog类Qt中的标准对话框遵循相同的使用方式//定义对话框对象DialogType dlg(this);//设置对话框属性dlg.setPropertyXXX(value);if(dlg.exec() == DialogType::Value){ //获取对话迎数据 Ty...原创 2018-09-14 10:51:26 · 183 阅读 · 0 评论 -
Qt 笔记:主窗口中的状态栏
状态栏的概念和意义 -状态栏是应用程序中输出简要信息的区域 -状态栏一般位于主窗口的最底部 -状态栏中的消息类型 ·实时消息,如:当前程序状态 ·永久消息,如:程序版本号,机构名称 ·进度消息,如:进度条提示,百分比提示在Qt中提供与状态栏相关的类组件 -状态栏(QStatusBar) -任意组件(QWidget)// call memeber fucntionQSt...原创 2018-09-14 11:39:28 · 1294 阅读 · 0 评论 -
Qt 笔记:深入浅出信号与槽
Qt中信号(SIGNAL)的本质-信号只是一个特殊的成员函数声明·函数的返回值是void类型·函数只能声明不能定义-信号必须使用signals关键字进行声明·函数的访问属性自动被设置为protected·只能通过emit关键字调用函数(发射信号)信号定义示例class Test:pulic QObject //只有Qt类才能定义信号{ Q_OBJECT ...原创 2018-09-26 09:46:11 · 281 阅读 · 0 评论 -
Qt 笔记:替换对话框
替换对话框需求分析-可复用软件部分-查找文本框中的指定字符串-替换单个指定字符串-点击关闭按钮后隐藏替换对话框的设计与实现总结-替换对话框的功能涵盖了查找对话框的功能-替换对话框可以继承自查找对话框-替换功能的实现是基于查找算法完成的-替换对话框是一个可复用的软件部件ReplaceDialog实例...原创 2018-09-20 10:28:55 · 467 阅读 · 0 评论 -
Qt 笔记:深入解析视图与委托
视图与委托-视图负责确定数据项的组织显示方式(列表,树形,表格)-委托负责具体数据项的显示和编辑(数据值,编辑器)-视图和委托共同完成数据显示功能和数据编辑功能自定义委托的默认数据显示方式-重写paint成员函数-在paint中自定义数据显示方式-重写editorEvent成员函数-在editorEvent中处理交互事件在paint中自定义数据显示方式if...原创 2018-09-25 19:32:56 · 662 阅读 · 0 评论 -
Qt 笔记:模型视图中的委托
模型视图中的委托-委托(Delegate)是视图中处理用户输入的部件-视图可以设置委托对象用于处理用户输入-委托对象负责创建和显示用户输入上下文 委托中的编辑器-委托能够提供编辑时需要的上下文环境(编辑器)-不同委托提供的编辑器类型不同(文本框,单选框,等)-编辑器用从模型获取数据,并将编辑结果返回模型 委托中的关键函数-createEditor·需...原创 2018-09-25 16:44:24 · 756 阅读 · 0 评论 -
Qt 笔记:Qt中的IO操作
Qt中IO操作的处理方式-Qt通过统一的接口简化了文件与外部设备的操作方式-Qt中的文件被看做一种特殊的外部设备-Qt中的文件操作与外部设备的操作相同IO操作中的关键函数接口-打开设备:bool open(OpenMode mode)-读取数据:QByteArray read(qint64 maxSize)-写入数据:qint64 write(const QByteAr...原创 2018-09-14 17:51:44 · 5053 阅读 · 0 评论 -
Qt 笔记:调色板
·Qpalette类包含了组件状态的颜色组·Qpalette对象包含了3个状态的颜色描述-激活颜色组(ACtive)·组件获得焦点使用的颜色搭配方案-非激活颜色组(Inactive)·组件失去焦点使用的颜色方案-失效颜色组(Disabled)·组件处于不可用状态使用的颜色方案QPalette中的颜色组定义了组细节的颜色值QPalette::ColorRole中的...原创 2018-09-19 19:19:00 · 471 阅读 · 0 评论 -
Qt 笔记:查找对话框
·查找对话框需求分析-可复用软件部件-查找文本框中的指定支付串-能够指定查找方向-支持大小写铭感查找·附加需求-点击关闭按钮后隐藏查找对话框的架构与设计 文本查找功能的核心思想-获取当前光标的位置并作为起始点-向后(向前)查找目标第一次出现的位置-通过目标位置以及目标长度在文本框中进行标记QString类中提供了子串查找的相关函数-index...原创 2018-09-19 17:13:33 · 982 阅读 · 0 评论 -
Qt 笔记:文本编辑组件
Qt中支持3中常用的文本编辑组件 -QLineEdit(单行文本编辑组件) -QTextEdit(多行富文本编辑组件) -QPlainTextEdit(多行普通文件编辑组件)Qt中文本编辑组件继承层次图 不同文本组件的特性比较 Qt中常用文本编辑组件的内置功能 1.右键弹出式菜单 2.快捷键功能(如复制,粘贴,剪切,等)总结: Qt中提供了3种不同类型的文本编辑组件...原创 2018-09-14 14:46:13 · 229 阅读 · 0 评论