
Qt
文章平均质量分 60
Qt
qq_52484093
这个作者很懒,什么都没留下…
展开
-
简易绘图程序
综合实例开发:简易绘图程序功能需求:自由图形绘制 基本图形绘制 (直线,矩形,椭圆) 能够选择图形绘制颜色简易绘图程序运行截图界面解决方案1. 以 QWidget 为基类创建绘图主窗口2. 使用 QGroupBox 创建图形设置区域3. 使用单选按钮 QRadioBox 实现目标图形的选择4. 使用组合框 QComBox 实现绘图颜色的选择问题如何实现自由绘图?分析自由绘图的本质是跟踪鼠标的移动轨迹;因此,必须考虑什么时候开始?什么时候结原创 2022-01-26 21:03:10 · 574 阅读 · 0 评论 -
基础图形绘制
Qt 图形系统中的关键角色QPainterQt 中的画家,能够绘制各种基础图形 拥有绘图所需的画笔 (QPen),画刷 (QBrush),字体 (QFont)QPainterDeviceQt 中的画布,画家 (QPainter) 的绘画板 所有的 QWidget 类都继承自 QPainterDevice小贴士:1. QPainter 中的所有绘制参数都可以自定义2. 任意的 QWidget 对象都能够作为画布绘制图形画家 (QPainter) 所使用的工具角色QP原创 2022-01-25 21:07:14 · 110 阅读 · 0 评论 -
深入浅出信号与槽
一个事实在实际的项目开发中,大多数时候是将组件中预定义的信号连接到槽函数;信号发射的时候槽函数被调用。深度的思考信号是怎么来的?又是如何发射的?Qt 中 (SIGNAL) 的本质信号只是一个特殊的成员函数声明函数的返回值是 void 类型 函数只能声明不能定义信号必须使用 signals 关键字进行声明函数的访问属性自动被设置为 protected 只能通过 emit 关键字调用函数 (发射信号)信号定义示例信号与槽的对应关系一个信号可以连原创 2022-01-25 20:29:09 · 110 阅读 · 0 评论 -
深入解析视图与委托
深度的思考委托是视图的构成部分,那么委托是否帮助视图显示具体数据呢?分析Qt 中的委托作为视图的内部组件而存在,因此,委托是视图的一部分;必然,委托需要承担数据显示的部分工作。实验结论视图负责确定数据项的组织显示方式 (列表,树形,表格)委托负责具体数据项的显示和编辑 (数据值,编辑器)视图和委托共同完成数据显示功能和数据编辑功能拓展的思考如何改变视图默认的数据显示方式?自定义委托的默认数据显示方式1. 重写 paint 成员函数2. 在原创 2022-01-24 20:05:54 · 223 阅读 · 0 评论 -
模型视图中的委托
问题模型负责组织数据,视图负责显示数据,如何编辑修改数据?传统的 MVC 设计模式Qt 中的模型视图设计模式如何处理用户输入?视图中集成了处理用户输入的功能视图将用户输入作为内部的子功能而实现模型视图中的委托委托 (Delegate) 是视图中处理用户输入的部件视图可以设置委托对象用于处理用户输入委托对象负责创建和显示用户上下文如:编辑框的创建和显示委托中的编辑器委托能够提供编辑时需要的上下文环境 (编辑器)不同委托提供的编辑原创 2022-01-22 21:18:14 · 355 阅读 · 0 评论 -
自定义模型类
QStandardItemModel 是一个通用的模型类能够以任意的方式组织数据数据组织的基本单位为数据项 (QStandardItem)每一个数据项能够存储多个具体数据 (附加数据角色)每一个数据项能够对数据状态进行控制 (可编辑,可选,...)Qt 中通用的模型类 QStandardItemModelQt 中的变体类型 QVariantQVariant 是一个用于封装的类型QVariant 能够表示大多数常见的值类型QVariant 每次只能封装 (保原创 2022-01-21 21:14:03 · 297 阅读 · 0 评论 -
模型视图设计模式
模型视图设计模式的核心思想模型 (数据) 与视图 (显示) 相分离模型对外提供标准接口存取数据 (不关心数据如何显示)视图自定义数据的显示方式 (不关心数据如何组织存储)模型视图的直观理解模型视图模式的工作机制当数据发生改变时模型发出信号通知视图当用户与视图进行交互时视图发出信号提供交互信息Qt 中的模型类层次结构Qt 中的视图类层次结构关键技术问题:模型如何为数据提供统一的访问方式?深入理解:在 Qt 中,..原创 2022-01-19 20:28:24 · 434 阅读 · 0 评论 -
Qt中的多页面切换组件
Qt 中的多页面切换组件 QTabWidget能够在同一个窗口中自由切换不同页面的内容是一个容器类型的组件,同时提供友好的页面切换方式QTabWidget 的使用方式在应用程序中创建 QTabWidget 的对象将其他 QWidget 对象加入该对象中小贴士:1. 在 QTabWidget 对象中加入一个组件将生成一个新的页面 2.QTabWidget 对象每次只能加入一个 QWidget 对象问题如何将多个组件加入到 QTabWidget 页面中?.原创 2022-01-19 20:03:51 · 1987 阅读 · 0 评论 -
程序中的配置文件
应用程序在运行后都有一个初始化的状态一般而言:程序的初始状态是最后一次运行退出前的状态问题如何保存和恢复程序状态?解决思路程序退出前保存状态参数到文件 (数据库)程序再次启动时读出状态参数并恢复状态参数的存储方式文本文件格式 (XML,JSon,等)轻量级数据库 (Access,SQLite,等)私有二进制文件格式Qt 中的解决方案通过二进制数据流将状态参数直接存储于文件中优势:参数的存储和读取简单高效,易于编码实现 最终文件为二原创 2022-01-18 19:47:58 · 187 阅读 · 0 评论 -
Qt中的调色板
QPalette 类包含了组件状态的颜色组QPalette 对象包含了 3 个状态的颜色描述激活颜色组 (Active)组件获得焦点使用的颜色搭配方案非激活颜色组 (Inactive)组件失去焦点使用的颜色方案失效颜色组 (Disabled)组件处于不可用状态使用的颜色方案QPalette 中的颜色组定义了组细节的颜色值QPalette::ColorRole 中的常量值用于标识组件细节理解 Qt 中的调色板理解:1. 调色板是存储组件颜色信息的数据.原创 2022-01-13 12:19:03 · 917 阅读 · 0 评论 -
发送自定义事件
Qt 可以在程序中自主发送事件阻塞型事件发送事件发送后需要等待事件处理完成非阻塞型事件发送事件发送后立即返回 事件被分发到事件队列等待处理QApplication 类提供了事件发送的静态成员函数阻塞型发送函数:bool sendEvent(QObject* receiver,QEvent* event);非阻塞型发送函数:bool postEvent(QObject* receiver,QEvent* event);注意事项sendEvent 中事件对象的生命周原创 2022-01-10 20:29:38 · 296 阅读 · 0 评论 -
文本打印
QPlainTextEdit 内部的文档结构QPlainTextEdit 通过 QTextDocument 对象存储文本数据QPlainTextEdit 本身只负责界面形态的显示QTextDocument 是表示文本以及文本属性的数据类设置文本的属性:排版,字体,标题,等获取文本参数:行数,文本宽度,文本信息,等实现标准操作:撤销,重做,查找,打印,等打印功能的实现步骤1. 连接 QAction 打印对象的信号到槽函数2. 在槽函数中定义 QPrintDi原创 2022-01-10 19:50:07 · 159 阅读 · 0 评论 -
Qt中的拖放事件
拖放一个文件进入窗口将触发拖放事件每一个 QWidget 对象都能够处理拖放事件拖放事件的处理函数为void dragEnterEvent(QDragEnterEvent* e); void dropEvent(QDropEvent* e);拖放事件中的 QmimeDataQmimeData 是 Qt 中的多媒体数据类拖放事件通过 QmimeData 对象传递数据QmimeData 支持多种不同类型的多媒体数据常用 MIME 类型数据处理函数自定义拖放事件原创 2022-01-09 19:57:13 · 929 阅读 · 0 评论 -
Qt中的事件处理
图形界面应用程序的消息处理模型操作系统发送的消息如何转变为 Qt 信号?Qt 平台将系统产生的消息转换为 Qt 事件Qt 事件是一个 QEvent 对象Qt 事件用于描述程序内部或外部发生的动作任意的 QObject 对象都具有事件处理的能力GUI 应用程序的事件处理方式1. Qt 事件产生后立即分发到 QWidget 对象2. QWidget 中的 event(QEvent*) 进行事件处理3. event() 根据事件的类型调用不同的事件处理函数原创 2022-01-07 20:44:07 · 3414 阅读 · 0 评论 -
缓存区操作与目录操作
Qt 中缓冲区的概念缓冲区的本质是一段连续的存储空间QBuffer 是 Qt 中缓冲区相关的类在 Qt 中可以将缓冲区看作一种特殊的 IO 设备文件辅助流可直接用于操作缓冲区QBuffer 缓冲区的使用方法QBuffer 缓冲区的使用场合1. 在线程间进行不同类型的数据传递2. 缓存外部设备中的数据返回3. 数据读取速度小于数据写入速度缓冲区操作void write_buffer(int type, QBuffer &buffer){原创 2022-01-01 20:47:45 · 157 阅读 · 0 评论 -
文本流和数据流
Qt 中将文件类型分为2大类文本文件文件内容是可读的文本字符数据文件文件内容是直接的二进制数据QFile 直接支持文本文件和数据文件的读写qint64 read(char* data,qint64 maxSize)QByteArray read(qint64 maxSize)qint64 write(const char* data,qint64 maxSize)qint64 write(const QByteArray& byteArray)思考如何原创 2022-01-01 17:17:15 · 225 阅读 · 0 评论 -
Qt中的文件操作
Qt 中 IO 操作的处理方式Qt 通过统一的接口简化了文件与外部设备的操作方式Qt 中的文件被看作一种特殊的外部设备Qt 中的文件操作与外部设备的操作相同IO 操作中的关键函数接口打开设备:bool open(OpenMode mode)读取数据:QByteArray read(qint64 maxSize)写入数据:qint64 write(const QByteArray& byteArray)关闭设备:void close()Qt 中 IO 设备的原创 2021-12-31 19:15:42 · 767 阅读 · 0 评论 -
Qt中的文本编辑组件
Qt 中支持3种常用的文本编辑组件QLineEdit单行文本编辑组件QTextEdit多行富文本编辑组件QPlainTextEdit多行普通文本编辑组件Qt 中常用文本编辑器组件的继承层次图不同文本组件的特性比较Qt 中常用文本编辑器组件的内置功能1. 右键弹出式菜单2. 快捷键功能复制,粘贴,剪切,等文本编辑器组件的对比试验MainWindow::MainWindow(QWidget *parent) : QMain...原创 2021-12-31 18:25:31 · 501 阅读 · 0 评论 -
应用程序中的主窗口
Qt 中的主窗口Qt 开发平台直接支持主窗口的概念QMainWindow 是 Qt 中主窗口的基类QMainWindow 继承于 QWidget 是一种容器类型的组件QMainWindow 中封装的秘密QMainWindow 中的组件布局在 Qt 中提供与菜单相关的类组件在 Qt 主窗口中创建菜单在 Qt 中提供与工具栏相关的类组件在 Qt 主窗口中创建工具栏QToolBar 的关键成员函数voi...原创 2021-12-30 20:24:02 · 250 阅读 · 0 评论 -
Qt中的计时器
计时器的概念计时器是工程开发中非常重要的角色定时器用于每隔一定的时间触发一个消息定时器消息最终会转化为函数调用宏观上定时器在每个时间间隔会调用指定的函数计时器 (QTimer) 的使用方法1. 编写计时器消息处理函数2. 在程序中创建计时器对象3. 连接计时器消息和消息处理函数4. 设置计时器时间间隔并启动计时计时器的使用void Widget::initControl(void){ QStackedLayout *sLayout = new原创 2021-12-29 17:59:23 · 1722 阅读 · 0 评论 -
布局管理器
采用绝对定位的开发方式,组件的位置和大小无法自适应父窗口的变化。解决方案:布局管理器提供相关的类对界面组件进行布局管理能够自动排列窗口中的界面组件 窗口变化后自动更新界面组件的大小QLayoutQLayout 是 Qt 中布局管理器的抽象基类通过继承 QLayout 实现功能各异且互补的布局管理器Qt 中可以根据需要自定义布局管理器布局管理器不是界面部件,而是界面部件的定位策略QBoxLayout 布局管理器以水平或垂直的方式管理界面组件..原创 2021-12-28 18:33:31 · 321 阅读 · 0 评论 -
Qt中的消息处理
Qt 消息模型Qt 封装了具体操作系统的消息机制Qt 遵循了经典的 GUI 消息驱动事件模型Qt 中定义了与系统消息相关的概念信号 (Signal)由操作系统产生的消息槽 (Slot)程序中的信号处理函数连接 (Connect)将系统消息绑定到消息处理函数Qt 中系统消息的机制信号到槽的连接必须发生在两个 Qt 类对象之间!Qt 中的核心 - QObject::connect 函数在 Qt 中,消息用字符串或函数指针进行描述con..原创 2021-12-26 19:50:29 · 209 阅读 · 0 评论 -
Qt中的坐标系统
坐标系统Qt 中使用统一的坐标系统定位窗口部件的位置和大小Qt 部件类提供成员函数在坐标系统中进行定位QWidget 类提供了窗口部件所需的坐标系统成员函数QWidget 类中的坐标系统成员函数窗口部件的大小设置QWidget 类提供了成员函数:改变窗口部件大小void resize(int x, int y) void resize(const QSize&)改变窗口部件的位置void move(int x, int y) void mo.原创 2021-12-26 18:49:43 · 152 阅读 · 0 评论 -
窗口组件及窗口类型
QWidget 组件QWidget 类继承自 QObject 类和 QPaintDevice 类QObject 是所有支持 Qt 对象模型的基类 QPaintDevice 是 Qt 中所有可绘制组件的基类QWidget 能够绘制自己和处理用户的输入QWidget 是 Qt 中所有窗口组件类的父类 (super class)QWidget 是所有窗口组件的抽象Qt 中的每个窗口组件都是一个 QWidgetQWidget 类对象经常作为父组件或顶级组件使用QLabel 组原创 2021-12-26 18:36:38 · 234 阅读 · 0 评论 -
Qt中的标准对话框
标准对话框Qt 为开发者提供了一些可复用的对话框类型Qt 提供的可复用对话框全部继承自 QDialog 类Qt 中的标准对话框遵循相同的使用方式消息对话框的使用消息对话框的使用实例void Widget::CustomMsgBtn_Clicked(){ QMessageBox dlg; dlg.setWindowTitle("dialog"); dlg.setText("It's a detail message dialo...原创 2021-12-25 16:48:47 · 1446 阅读 · 0 评论 -
对话框及其类型
对话框是与用户进行简短交互的顶层窗口QDialog 是 Qt 中所有对话框窗口的基类QDialog 继承于 QWidget 是一种容器类型的组件模态对话框(QDialog::exec())显示后无法与父窗口进行交互是一种阻塞式的对话框调用方式非模态对话框(QDialog::show())显示后独立存在可以同时与父窗口进行交互是一种非阻塞式的对话框调用方式小技巧在栈上创建模态对话框是最简单常用的方式一般情况下非模态对话框需要在堆上创建通过 QD.原创 2021-12-24 20:31:38 · 508 阅读 · 0 评论 -
Qt对象间的父子关系
Qt 对象间可以存在父子关系每一个对象都保存它所有子对象的指针每一个对象都有一个指向其父对象的指针当指定 Qt 对象的父对象时其父对象会在子对象链表中加入该对象的指针该对象会保存指向其父对象的指针对象间的父子关系#include <QCoreApplication>#include <QList>#include <QDebug>void fcTest(){ QObject* p = new QObjec..原创 2021-12-24 19:31:27 · 212 阅读 · 0 评论