![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Qt基础/高级
文章平均质量分 83
太阳每天都是新的,你是否每天都在努力。
芒种、
这个作者很懒,什么都没留下…
展开
-
Qt容器类
用来存储其他的类或者数据。存储基础的int,float类型,也可以是QString,QDate类型。Qt的容器类比STL(标准模板库)中的容器类更轻巧、安全和易于使用。Qt的容器类分为(sequential containers)和:通过元素在容器中的存储和访问。。:通过和读取元素。。原创 2024-01-29 21:53:40 · 626 阅读 · 0 评论 -
Qt全局定义
这个宏展开为数值形式 0xMMNNPP (MM = major, NN = minor, PP = patch) 表示 Qt 编译器版本,例如 Qt 编译器版本为 Qt 5.9.1,则 QT_VERSION 为 0x050901。这个宏常用于条件编译设置,根据 Qt 版本不同,编译不同的代码段。和在使用和设计共享库时,用于导入导出库的内容。debuginfowarningcritical和while(1)类似,其底层使用for(;;原创 2023-11-05 19:13:26 · 600 阅读 · 0 评论 -
Qt QMouseEvent鼠标事件简介
一、QMouseEvent的详细描述首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理。QMouseEvent类包含了用于描述鼠标事件的参数。当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用QWidget::setMouseTracking()函数来开启鼠标轨迹,这种情况下只要鼠标指针在移动,就会产生一系列的QT鼠标事转载 2020-12-30 10:33:56 · 1599 阅读 · 0 评论 -
Qt Event事件详解
一、简述个人认为,事件机制是Qt最难以理解且最为精妙的一部分。事件主要分为两种:在与用户交互时发生。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。系统自动发生,比如计时器事件(timerEvent)等。在发生事件时(比如说上面说的按下鼠标),就会产生一个QEvent对象(这里是QMouseEvent,为QEvent的子类),这个QEvent对象会传给当前组件的event函数。如果当前组件没有安装事件过滤器(这个下文会提到),则会被event函数发放到相应的转载 2020-12-30 10:27:35 · 4868 阅读 · 0 评论 -
Qt QMenuBar、QMenu、QAction、QStatusBar、QMainWindow简单介绍
mainwindow的ui文件是默认有menubar,maintoolbar和statusbar的。QMenuBar:窗口的菜单栏,在此基础上添加不同的QMenu和QActionQMenu:菜单,可以显示文本和图标,但是并不负责执行操作QAction: 负责执行操作的部件QStatusBar:负责提示的状态栏,通常在窗口最下侧一、通过设计器添加菜单栏和状态栏参考大神博客:Qt添加菜单栏和工具栏二、自定义菜单栏...原创 2020-12-28 17:32:26 · 1606 阅读 · 1 评论 -
Qt QDialog详解、自定义QMessageBox
一、简介1、Qt中使用QDialog来实现对话框,QDialog继承自QWidget,对话框分为两种,一种是模态对话框、 另一种是非模态对话框。即阻塞和非阻塞对话框,而模态对话框又有两种:应用程序级别的和窗口级别的,分别指完成对话框之前阻塞整个应用和阻塞关联窗口。exec() 和 open() 分别为应用程序级别和窗口级别的模态对话框,show()则为非模态对话框。1. QDialog::show(): 非模态,非阻塞的。2. QDialog::exec(): 模态 ,阻塞,整个系统阻塞掉。3.原创 2020-12-24 15:29:07 · 2552 阅读 · 0 评论 -
Qt QTreeWidget详解
Qt中实现树形结构可以使用QTreeWidget类,也可以使用QTreeView类,QTreeWidget继承自QTreeView类。一、常用属性(可通过设计器直接设置)函数作用header()->setVisible(false);设置标题头是否显示header()->setDefaultSectionSize(200);设置标题头默认的尺寸void setSortingEnabled(bool enable);设置点击标题头排序void set原创 2020-12-23 15:15:45 · 4655 阅读 · 3 评论 -
Qt QTableWidget详解
QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC、C#中的DataGrid。说到QTableWidget,就必须讲一下它跟QTabelView的区别了。QTableWidget是QTableView的子类,主要的区别是QTableView可以使用自定义的数据模型来显示内容(也就是先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型,并且其单元格数据是QTableWidgetItem的对象来实现的(也就是不需要数据源,将逐个单元格内的信息填好即原创 2020-12-22 15:04:00 · 3198 阅读 · 1 评论 -
Qt Qss黑色样式(带详细注释)【一】
/* ================================================ *author:chencanlastedited:20201209* ================================================ */$backgroundcolor = #f5f5f5;/*浮动窗口*/QDockWidget{ /*背景色*/ background-color:rgb(245,245,245);}/*浮动窗口-子控件弹出-鼠标停原创 2020-12-21 13:53:01 · 3361 阅读 · 0 评论 -
Qt Qss伪装态和子部件
Qt qss一些伪装态,以及margin与padding区别一、伪状态伪状态描述:checkedbutton部件被选中:disabled部件被禁用:enabled部件被启用:focus部件获得焦点:hover鼠标位于部件上:indeterminatecheckbox或radiobutton被部分选中:off部件可以切换,且处于off状态:on部件可以切换,且处于on状态:pressed部件被鼠标按下:unchec原创 2020-12-21 13:43:43 · 541 阅读 · 0 评论 -
QSS编辑器—实时预览 语法提示 颜色拾取
桌面应用Qt widgets是最好选择之一。尤其是不使用C#、vb等语言编写应用程序时。使用qss可以用类似css的方式美化Qt widgets界面,方法简单,效果也很漂亮。但是目前并没有很好用的Qss编辑器。网上搜了一下 ,知名的qss编辑器QssEditor、Rizek Qss Editor等功能都不是很完善,QssEditor控件很少,不支持语法提示,Rizek Qss Editor不能实时预览。详细用法可参考大佬博客:QSS 编辑预览工具并且目前也没有qss编辑器可以支持变量,很是不方便。所以转载 2020-12-09 15:01:42 · 2379 阅读 · 3 评论 -
Qt QListWidget详解
Qt提供QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。一般列表框控件中的列表项有两种加载方式:一种是由用户手动添加的列表项,比如音乐播放器中加载音乐文件的文件列表,每一个音乐文件都是一个列表项。对于这种列表项,用户可以进行增加、删除、单击以及双击等操作。一种是由程序员事先编写好,写在程序中供用户选择的列表项,比如餐厅的电子菜单,每一道菜对应一个列表项。对于这种列表项,用户可以进行单机和双击操作(增加和删除操作也是可以进行的,但是一般的点菜系原创 2020-11-26 11:19:53 · 7151 阅读 · 0 评论 -
Qt QSlider滑块详解
QSlider很少有自己的函数,大部分功能在QAbstractSlider中。最有用的函数是setValue(),用来设置滑块的当前值;triggerAction()来模拟点击的效果(对快捷键有用);setSingleStep()、setPageStep()用来设置步长;setMinimum()和setMaximum()用于定义滚动条的范围。QSlider提供了一些方法来控制刻度标记:可以使用setTickPosition()来表示刻度标记的位置,使用setTickInterval()来指定刻转载 2020-11-25 10:35:22 · 6429 阅读 · 0 评论 -
Qt QComboBox详解
下拉框是一个组合控件(包含一个文本显示控件和一个按钮)。一、设计器编辑二、信号函数void editTextChanged(const QString &); 只有用户编辑时,内容改变时触发。void activated(int index); 用户选中下拉列表某一项触发,编辑和代码改变索引时不会触发。void activated(const QString &);void highlighted(int index); 高亮时被触发,就是鼠标移动到某个下拉项时。void原创 2020-11-24 14:08:24 · 16401 阅读 · 0 评论 -
Qt QVariant详细用法
一、简介QVariant可以存储各种数据类型,QVariant行为类似于C/C++的union, 但在Qt中比union强大很多, QVariant内置支持所有QMetaType::Type里声明的类型如:int,QString,QFont,QColor等,甚至QList,QMap<QString, QVariant>等组成的任意复杂类型。简单的说QVariant可以存储任意数据类型,表现的类似弱语言,如JS中的var如,包括容器类型的值,如QStringlist。Qt的很多功能都是建立在QV转载 2020-11-24 11:03:13 · 5540 阅读 · 0 评论 -
Qt QCheckBox详解
一、QCheckBox1. 常用方法QCheckBox 继承于QAbstractButton,支持快捷键功能。void setText(const QString &text):设置文本内容。QString text() const:获取文本内容。bool isChecked() const:判断是否选中。void setAutoExclusive(bool):设置排斥功能。()注意:QCheckBox默认是多选,只要一组QCheckBox不在一个层级(就是在不同父节点下面),就原创 2020-11-20 17:12:17 · 8046 阅读 · 0 评论 -
Qt QAbstractButton详解
简述QAbstractButton类是按钮部件的抽象基类,提供了按钮所共有的功能。QAbstractButton类实现了一个抽象按钮,并且让它的子类来指定如何处理用户的动作,并指定如何绘制按钮。QAbstractButton提供了点击和勾选按钮。QRadioButton和QCheckBox类只提供了勾选按钮,QPushButton和QToolButton提供了点击按钮,如果需要的话,它们还可以提供切换行为。任何按钮,都可以显示一个包含文本和图标的标签。setText()用来设置文本,setIcon(转载 2020-11-20 15:31:43 · 838 阅读 · 0 评论 -
QT通过pri文件进行模块化开发
对于QT项目所有的项目都是在同一个文件夹下进行开发的,当做一个项目规模相对较大的时候文件很多导致维护及其困难,所以pri对文件进行模块化开发至关重要,pri进行模块化无非就是将相同业务逻辑的代码放到同一个文件夹下进行管理。如下为实现效果图两张图片显示的是经过pri模块化的效果。第一步:到项目根目录下新建你自己的业务逻辑的文件夹,我这里面新建的是onepri,towpri,threepri,三个文件夹第二部:将相同的业务逻辑文件移动到对应的文件夹中。第三步:在新建的文件夹下新建 " .pr转载 2020-11-03 09:37:46 · 432 阅读 · 0 评论 -
Qt QLayout布局
一、遍历所有QObject的子节点const QObjectList &children():获取某个窗口下所有的子节点 QObjectList list = ui->widget->children(); for(int i = 0; i < list.size();i++) { qDebug() <<list[i]->objectName(); //打印所有对象的名字 }...原创 2020-09-29 14:43:32 · 819 阅读 · 0 评论 -
Qt QLineEdit详解
一、QLineEdit1. 基础方法setText(const QString &):设置行编辑框内容setPlaceholderText(const QString &):设置默认提示内容QString text() const:获取当前编辑框内容setClearButtonEnabled(bool enable):设置编辑框删除按钮是否显示setReadOnly(bool):设置只读,不能被编辑。但是右键可以复制。setMaxLength(int):设置输入的最大长度原创 2020-09-24 14:01:26 · 2327 阅读 · 0 评论 -
Qt Qss样式表详解
1 使用Qss设置QT程序界面的样式和皮肤 1.1 Qss的功能 Qt程序界面中控件的背景图片、大小、字体颜色、字体类型、按钮状态变化等属性可以通过Qss文件来设置,美化UI界面。实现界面和程序的分离,快速切换皮肤。 1.2 QSS基本属性设置 Qss的强大在于组合功能的强大,这里只是简单介绍基本功能,将简单功能组合起来才能实现好看的效果。 Qss背景属性(Backgr原创 2020-09-24 13:58:23 · 5851 阅读 · 0 评论 -
VS+QT创建的项目 UI界面更新控件,代码里识别不到
1. 每次用设计器打开ui文件,在里面添加或是删除一些空间之后进行重新编译,ui访问不到重新编译生成的ui_xxx.h里面的控件。具体解决办法:保存更新后的ui界面;回到VS界面,右键.ui文件,编译;项目名上右键,重新扫描解决方案;这时就可以识别到更新的控件了。...原创 2020-09-23 15:52:49 · 2270 阅读 · 1 评论 -
Qt QPushButton详解
一、QPushButton1. QPushButton事件信号void pressed(); //按钮按下void released(); //按钮抬起void clicked(bool checked = false); //按钮选中和松开void toggled(bool checked);原创 2020-09-23 14:34:53 · 2350 阅读 · 2 评论 -
Qt QLabel详解
一、QLabel功能继承于QWidget,显示文字,换行显示样式设置字体,颜色,背景色显示图片播放gif动画界面创建,手动创建原创 2020-09-22 16:59:14 · 8050 阅读 · 0 评论 -
Qt QString详解
一、字符集的概念1. 多字节字符集0 到 127之间的字符,依旧是一个字节代表一个字符,超出部分 2 个字节来表示一个字符2. UTF-8变长的编码方式,单字节与ASCII相同,对于n字节的符号(n > 1),首字节前n位为1,n+1为0,后面字节前两位都是103. UTF-16(两字节或是四字节)4. UTF-32(四字节)二、字节序(BOM)的概念小端字节序(LE):低位在前(0x001A23 23 1A 00)大端字节序(BE):高位在前(0x001A23 00 1A 2原创 2020-09-22 10:00:40 · 5747 阅读 · 1 评论 -
QWidget类详解
一、QWidget的显示和隐藏注意:槽函数在子线程中直接调用会发生崩溃,但是信号可以在子线程中调用,在QWidget的子类中绑定信号槽即可。二、QWidget常用方法hide():隐藏窗口。show():显示窗口。QRect &QWidget::geometry():可以获取窗口的x,y,weight,height。setGeometry(int x, int y, int w, int h):设置窗口位置和窗口的宽度和高度。有重载该函数setGeometry(const QRec原创 2020-09-18 17:36:05 · 3334 阅读 · 1 评论 -
QT信号和槽
一、QT信号槽的概念类似windows的消息机制信号函数,只发送不需要知道接收者槽函数(普通函数),只接收不管通讯QObject来绑定信号和槽二、QT信号槽的原理绑定信号函数和槽函数调用信号函数(将信号写入队列)主线程从队列中获取信号三、信号槽的处理主循环QApplication a(argc, argv)进入主事件循环,等待程序执行结束retrun a.exec()四、添加信号和槽方法设计器添加信号槽的两种方法(拖动、添加)使用内部的信号槽函数,实现关闭窗口的示原创 2020-09-18 09:41:58 · 503 阅读 · 0 评论 -
Qt QMake详解
一、QMake是什么qmake 是由Qt提供的一个编译打包工具。二、为什么要学习QMake学会手动编译,平台移植,快速查找编译错误。三、QT程序编译经历的步骤编译pro生成makefile(由qmake完成)。jom或者make编译makefile(生成界面源码,uic.exe widget.ui -o ui_widget.h;生产信号槽代码,moc.exe widget.h moc_widget.cpp)。四、从代码到执行程序执行经历的步骤预处理-头文件加载和宏生成cpp。编译-c原创 2020-09-17 14:11:00 · 15359 阅读 · 0 评论 -
Qt Creator下载安装
一、下载https://www.qt.io/downloadhttp://download.qt.io/http://www.ffmpeg.club/qt_download.html原创 2020-09-16 14:20:46 · 1350 阅读 · 0 评论 -
Qt 实现软件自动更新
一、流程详细流程可参考本博客:https://blog.csdn.net/weixin_38739598/article/details/106571074二、具体实现CHttpDownLoadFile头文件#pragma once#include <QWidget>//网络相关头文件#include <QtNetwork/QNetworkAccessManager>#include <QtNetwork/QNetworkRequest>#inclu原创 2020-08-25 11:14:20 · 5295 阅读 · 10 评论 -
改变QTableWidget 行高
方法一:int wide = m_pFieldTable->columnWidth(0);int nRow = m_pFieldTable->rowCount();for(int i =0; i<nRow; i++){ m_pFieldTable->setColumnWidth(0, wide); m_pFieldTable->setRowHeight(i, 25); }必须得setColumnWidth和setRowHei原创 2020-07-17 10:17:48 · 8491 阅读 · 0 评论 -
Qt 实现软件自动更新
一、自动更新程序流程加载本地配置文件获取获取保存的版本号每次启动程序,首先从服务器请求最新的版本信息文件(包括版本号,压缩包下载地址,更新时间,更新说明)解压下载的文件获取服务器版本号,与本地版本号进行比较,如果高于本地,就下载压缩文件解压缩程序压缩包更新本地版本号,启动压缩包程序,退出当前自动更新程序二、代码实现1. 加载配置文件(采用TinyXml解析xml文件)TinyXml详细用法可参考:C++库(TinyXml)的安装和使用XMl 文件内容<?xml version=原创 2020-06-05 15:43:10 · 9104 阅读 · 14 评论 -
Qt 读写xml文件(QDomDocument)
#ifndef DOCXML_H#define DOCXML_H#include <QString>#include <QStringList>#include <QDomDocument>#include <QDomElement>class DocXml{public: DocXml(); static void CreateXml(const QString &filePath); //创建xml 空原创 2020-05-29 21:51:35 · 2889 阅读 · 0 评论 -
Qt 数据库相关操作
#include "QtDataBase.h"#include <QDebug>#include <QMessageBox>#include <QSqlError>#include <QSqlQuery> //数据库操作类#include <QVariantList>QtDataBase::QtDataBase(QWidget *parent) : QWidget(parent){ ui.setupUi(this); co原创 2020-05-20 22:25:09 · 164 阅读 · 0 评论 -
Qt 线程绘图
#pragma once#include <QObject>#include <QImage>class QtMyThread : public QObject{ Q_OBJECTpublic: QtMyThread(QObject *parent = nullptr); ~QtMyThread(); //线程处理函数 void drawImage();signals: void updateImage(QImage image);};#inc原创 2020-05-17 20:58:12 · 513 阅读 · 0 评论 -
Qt 线程的创建和使用(二)
自定义线程类,继承于 QObject#pragma once#include <QObject>class QtThread : public QObject{ Q_OBJECTpublic: QtThread(QObject *parent = nullptr); ~QtThread(); //线程处理函数 void myTimeOut(); void setFlag(bool flag = true);signals: void mySignal();.原创 2020-05-17 16:34:01 · 400 阅读 · 0 评论 -
Qt 线程的创建和使用(一)
#pragma once#include <QObject>#include <QThread>class QtMyThread : public QThread{ Q_OBJECTpublic: QtMyThread(QObject *parent); ~QtMyThread();signals: void isDone();protected: //QThread 的虚函数 线程入口函数 不能直接调用 void run();};#inc原创 2020-05-17 12:02:38 · 361 阅读 · 0 评论 -
QT Tcp传输文件客户端
#pragma once#include <QWidget>#include "ui_QtClient.h"#include <QTcpSocket>#include <QFile>class QtClient : public QWidget{ Q_OBJECTpublic: QtClient(QWidget *parent = Q_NULLPTR); ~QtClient();private: Ui::QtClient ui; QT.原创 2020-05-16 19:13:39 · 196 阅读 · 0 评论 -
QT Tcp传输文件服务器
#pragma once#include <QtWidgets/QWidget>#include "ui_QtServer.h"#include <QTcpServer>#include <QTcpSocket>#include <QFile>#include <QTimer>class QtServer : public QWidget{ Q_OBJECTpublic: QtServer(QWidget *parent原创 2020-05-16 19:11:13 · 262 阅读 · 0 评论 -
QTimer 定时器的使用
#include "QtTimer.h"QtTimer::QtTimer(QWidget *parent) : QWidget(parent){ ui.setupUi(this); ptimer = new QTimer(this); connect(ui.button_Strat, &QPushButton::clicked, this, &QtTimer::slotStart); connect(ui.button_Stop, &QPushButton::cli原创 2020-05-16 08:32:02 · 260 阅读 · 0 评论