MinGW 7.3.0 64-bit Qt SDK内置的C++编译器,相当于windows版本的gcc,g++。 Qt Creater 如果要使用VS进行编译 接受
一、Qt事件 1、事件介绍 事件是应用程序内外部产生的事情以及动作的统称,常见的所有事件例如鼠标事件QMouseEvent,键盘事件QKeyEvent等等都是继承自QEvent 2、事件的处理 在Qt中几乎所有的 Numlock处于打开状态,第七条是输入法切换的 void Widget::keyPressEvent(QKeyEvent *event) { if(event->modifiers() == Qt ControlModifier) //检查是否按下了Ctrl键,event->modifiers返回当前按键事件的修饰键状态 { if(event->key() == Qt ::LeftButton) { qDebug() << "鼠标左键"; } if(event->button() == Qt::RightButton) { qDebug() << "鼠标右键"; } if(event->button() == Qt::MidButton) { qDebug() <
线程 QT中的QThread提供了与平台无关的线程,一个QThread代表了一个应用程序中可用独立控制的线程,它与进程中的其他线程共享数据,但是是独立执行的,QThread从run()函数开始执行,默认 run()通过exec()来开启事件循环,并在线程内运行一个Qt事件循环。
一、Qt 下载 Qt 开发环境下载地址 : https://download.qt.io/archive/qt/ 该界面可以下载 Qt 各个版本的开发环境 ; Qt 版本选择 , Qt 的各个大版本都在同步更新 5.14 版本中 , BUG 最少 , 性能最好的版本 ; 另外还有一点需要指出的是 Qt 从 5.15 版本开始 , 不再提供离线安装包 , 需要自己下载源码编译安装 , 因此这里选择安装 Qt 5.14.2 ) ; 二、Qt 安装 双击安装软件 , 点击 " Next " , 没有 Qt 账号 , 输入账户名邮箱 , 密码 , 确认密码 , 同意协议 , 然后点击 " Next " , 点击 " Next " 按钮 , 会弹出要去邮箱验证的信息 , 这里到邮箱中验证 , 到邮箱中接收 Qt 官方发送的邮件 , 到给定的网址填写账户信息 , 这 Qt 官方是真的骚 , 还带收集个人信息的 ; 点击 " Qt 安装目录 , 点击下一步 , 给了个警告 , 点击 Yes , 目录中是 Qt 安装文件 , 没有影响 , 继续往下走 , Qt 安装时 , 推荐将所有的组件全部安装 , 减少一些不必要的麻烦
一、Qt网络 在进行网络编程之前,需要在项目中的.pro文件中添加network模块 实际开发中不会用Qt直接写服务器的,因为服务器是没有图形化界面的,一般我们会用其他的语言软件写好程序之后与Qt联合使用 读取当前接收缓冲区中的所有数据并返回一个QByteArray对象 write(const QByteArray&) 把数据写入socket中 deleteLater 暂时把socket对象标记为无效,Qt
Qt 网络 和多线程类似,Qt 为了⽀持跨平台,对网络编程的 API 也进行了重新封装。 在进行网络编程之前,需要在项目中的 .pro 文件中添加 network 模块。 添加之后要手动编译⼀下项目,使 Qt Creator 能够加载对应模块的头文件。 1.
一、简述QT 1、什么是QT QT是一个跨平台的C++开发框架,主要用于开发图形用户界面应用程序,但同样支持开发不带界面的命令行程序 这里的图形用户界面是一种人与计算机通信的界面显示格式,允许用户通过图形化的操作元素 广泛应用于桌面应用程序,移动应用程序,嵌入式系统 我们熟知的WPS office 就是QT开发的 二、QT的基本使用 前面安装啥的就不再多说了 1、新建项目 (1)选择项目模版 新建项目对话框里一共有五类模版 可以创建单元测试项目、Qt4设计师自定义控件、子目录项目等 Non-Qt-Project 非QT项目,可以创建纯C/C++项目 Import Project 导入项目,从版本控制管理系统的软件项目导入旧的项目 这里我们常用的只有第一种,然后右边会出现四类子模版 Qt Widgets Application:普通窗体模板,传统基于部件的窗体界面程序 Qt Console Application:Qt 控制台应用程序,因为 Qt 主要用于图形界面设计,这个控制台项目模板基本不用 Qt for Python:在Python下用 LGPL 的许可来开发闭源 Qt 软件 Qt Quick Application
QT容器 QString类 隐式共享: 隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作。 BOOL qDebug()<<s4.startsWith("哔哩哔哩"); QString s5 = "tom"; qDebug()<<s5.startsWith("tom",Qt 是否包含 qDebug()<<s5.contains("o");//同样可以表明大小写是否敏感 //比较 qDebug()<<QString::compare("Tom","tom",Qt it_mrw.key()<<":"<<it_mrw.next().value(); } qDebug()<<moneyHash; ---- QVariant类 QVariant类能保存很多Qt 类型的值,包括QColor,QBrush,QFont,QRect,QString及QSize等等,而且能存放Qt的容器类型值。
QT对象树 QT提供了对象树机制,能够自动、有效的组织和管理继承自QObject的对象。 当父类对象析构的时候,其对象链表中的所有(子类)对象也会被析构,父对象会自动,将其从父对象列表中删除,QT保证没有对象会被delete两次。
前言 Qt Quick和Qt Widgets这两种技术,官方是强推Qt Quick的。 https://download.qt.io/official_releases/QtForPython/ 注意: Qt Widgets使用Python结合PySide2开发的时候,窗口的缩放,内部的组件不会随之缩放 所以目前我就不太建议用Qt Widgets形式开发,建议Qt Quick. 常见属性 结合控件的SizePolicy属性,来控制布局管理中的控件的尺寸自适应方式。 Widget() widget.show() sys.exit(app.exec_()) 窗口设置 去掉顶部按钮 from PySide2.QtCore import QFile, Qt self.setWindowFlags(Qt.FramelessWindowHint)
qt 多线程 1. Qt 多线程概述 在 Qt 中,多线程的处理⼀般是通过 QThread 类来实现。QThread 代表⼀个在应用程序中可以独立控制的线程,也可以和进程中的其他线程共享数据。 connect() 函数第五个参数为 Qt::ConnectionType,用于指定信号和槽的连接类型。同时影响信号的传递方式和槽函数的执行顺序。 Qt::ConnectionType 提供了以下五种方式: 4. 在 Qt 中,专门提供了 QWaitCondition 类来解决像上述这样的问题。 特点:QWaitCondition 是 Qt 框架提供的条件变量类,用于线程之间的消息通信和同步。 特点:QSemaphore 是 Qt 框架提供的计数信号量类,用于控制同时访问共享资源的线程数量。 用途:限制并发线程数量,用于解决⼀些资源有限的问题。
Qt 窗口 Qt 窗口是通过 QMainWindow类 来实现的。 QMainWindow 是一个为用户提供主窗口程序的类,继承自 QWidget 类,并且提供了一个预定义的布局。 停靠在右侧 Qt::TopToolBarArea 停靠在顶部 Qt::BottomToolBarArea 停靠在底部 Qt::AllToolBarAreas 以上四个位置都可停靠 示例: QToolBar 其中可以设置允许停靠的位置有: Qt::LeftDockWidgetArea 停靠在左侧 Qt::RightDockWidgetArea 停靠在右侧 Qt::TopDockWidgetArea 停靠在顶部 Qt 内置对话框 Qt 提供了多种可复⽤的对话框类型,即 Qt 标准对话框。Qt 标准对话框全部继承于 QDialog类。 ::WindowFlags flags = Qt::WindowFlags(), \ Qt::InputMethodHints inputMethodHints = Qt::ImhNone) ; 参数说明
qt 文件 1. Qt 文件概述 文件操作是应用程序必不可少的部分。Qt 作为⼀个通用开发库,提供了跨平台的文件操作能力。 Qt 提供了很多关于文件的类,通过这些类能够对文件系统进行操作,如文件读写、文件信息获取、文件复制或重命名等。 2. 输入输出设备类 在 Qt 中,文件读写的类为 QFile 。 QIODevice 是 Qt 中所有输入输出设备(input/output device,简称 I/O 设备)的基础类,I/O 设备就是能进行数据输入和输出的设备,例如文件是⼀种 I/O 设备,网络通信中的 文件读写类 在 Qt 中,文件的读写主要是通过 QFile 类来实现。在 QFile 类中提供了一些用来读写文件的方法。 文件和目录信息类 QFileInfo 是 Qt 提供的一个用于获取文件和目录信息的类,如获取文件名、文件大小、文件修改日期等。
文件处理 QFile类用于文件操作,它提供了读写文件的接口,可以读写文件、二进制文件和Qt资源文件。 处理文本文件和二进制文件,可以使用QTextStream类和QDataStream类。
) { ui->setupUi(this); //创建工具栏,将其添加到右侧区域 QToolBar* tb = new QToolBar(this); addToolBar(Qt ::RightToolBarArea,tb); //设置工具栏停留的位置只能为最左侧和最右侧 tb->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea setupUi(this); //创建浮动窗口并将其设置在当前窗口中 QDockWidget* dw = new QDockWidget("浮动窗口",this); addDockWidget(Qt ::BottomDockWidgetArea,dw); //设置浮动窗口四个位置都可停靠,还有四个选项,分别是上下左右: //Qt::TopDockWidgetArea //Qt::BottomDockWidgetArea //Qt::LeftDockWidgetArea //Qt::RightDockWidgetArea dw->setAllowedAreas(Qt::AllDockWidgetAreas)
rootFrame = document->rootFrame(); //文档格式框架 QTextFrameFormat format; format.setBorderBrush(Qt setFrameFormat(format); //设置文本边框风格 QTextFrameFormat frameFormat; frameFormat.setBackground(Qt //字符格式 QTextCharFormat charFormat; //设置背景色 charFormat.setBackground(Qt { QTextCharFormat format;//字符格式 format.setFontWeight(QFont::Bold); format.setBackground(Qt ::red); format.setForeground(Qt::green) ; QString pattern = "\\bgood\\b";//匹配单词边界 QRegExp
模型/视图编程 Qt中的模型/视图架构用来实现大量的数据存储、处理及显示。 ::green); item2->setData("C",Qt::EditRole); item2->setData("indexC",Qt::ToolTipRole); item2 ::Orientation orientation, int role) const { if(role == Qt::DisplayRole && orientation == Qt::Horizontal = Qt::DisplayRole) { return QVariant(); } //水平表头 if(orientation == Qt::Horizontal Qt提供了项目试图的便捷类,这些类底层通过模型/视图框架实现。
前言 QT Quick和Qt widgets这两种技术,官方是强推QT Quick的。 QT Quick中布局一般有如下四种方式, 绝对坐标:x、y、z、width、height、top、left 锚(anchors) 布局 定位器(Row、Column、Grid、Flow) 布局管理器( #00000000 为窗口透明 //QML支持black 等颜色样式(没有#) //QML支持#11cfff 等颜色样式 //QML同样支持RGB格式 flags: Qt.Window //窗口标志 说明是什么窗口 使用 | 分割,缺省为Qt.Window //Qt.Window 普通窗口模式,带标题栏 //Qt.FramelessWindowHint 隐藏标题栏窗口 opacity:1 } opacity这个属性是对当前组件以及子组件都设置不透明度,所以不太适用 color: Qt.rgba(0,0,0,0)是对当前设置透明度,不会传到子组件 组件 基本组件
事件处理 QT中,事件作为一个对象,继承自QEvent类,常见的有键盘事件QKeyEvent、鼠标事件QMouseEvent和定时器事件QTimerEvent等。 QT中,任何QObject子类示例都可以接收和处理事件。实际编程中通常实现部件的paintEvent()、mousePressEvent()等事件处理函数来处理特定部件的特定事件。 每个程序的main函数最后都会调用QApplication类的exec()函数,它会使QT应用程序进入到事件循环,使应用程序在运行的时候接收各种事件。 一旦有事件发生,QT便会构造一个相应的QEvent子类的对象来表示它,然后将它传递给QObject对象或子对象。 ---- 鼠标事件 对鼠标实现进行重写来实现你想要达到的功能。 { statusBar()->showMessage(QString("左键:") +str ); } else if(event->button() == Qt
五、对话框 2、Qt内置对话框 Qt内置的所有对话框全部继承自QDialog (1)Message Box 消息对话框是非常常见常用的界面元素,主要用于为用户提示重要信息,强制用户进行选择操作 QMessageBox QColor& color) 设置当前颜色对话框 QColor currentColor() const 获取当前颜色对话框 QColor getColor(const QColor& initial = Qt & label, double value =0,doublemin=-2147483647,doublemax=2147483647,intdecimals=1,bool* ok=nullptr, Qt ::WindowFlags flags = Qt::WindowFlags()); 整型输⼊数据对话框 QString getItem (QWidget* parent, const QString& ::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone) ; 选择条⽬型输