QT
心若十年
每天学习一点。
展开
-
QT:只允许在自定义标题栏中鼠标拖动控制窗口位置
目录说明效果展示代码说明在使用了自定义的标题栏,想要实现鼠标只能在标题栏中拖动窗口,在其它地方拖动不了窗口的效果。我们这里是在标题栏类的鼠标事件中处理拖动窗口的事情。实现过程:标题栏类中的鼠标事件获取了拖动位置后,通过移动标题栏的父类部件,从而实现窗口拖动。效果展示代码主窗口代码#include "widget.h"#include "ui_widget.h"#include <QLabel>#include <QLay..原创 2021-05-31 17:48:24 · 677 阅读 · 0 评论 -
Qt:实现窗口渐变消失/渐变显示的效果
效果展示原创 2021-05-28 17:40:22 · 1663 阅读 · 0 评论 -
QPushButton按钮互斥效果
说明在某些情况我们想要实现的效果是:选中一个按钮后,上一次选择的就取消了,按钮和按钮之间产生互斥的效果!如下图效果:实现步骤1、需要创建一个QButtonGroup,然后启用互斥属性QButtonGroup* btn_group;btn_group = new QButtonGroup(this);btn_group->setExclusive(true);//启用互斥2、创建QPushButton,将按钮的checked启用,然后加入QButtonGr..原创 2021-05-25 14:38:29 · 2441 阅读 · 0 评论 -
Qt:QListWidget用法总结(后续更新)
目录设置item的宽,高设置item的宽,高QListWidgetItem* item = new QListWidgetItem(itemStr);item->setSizeHint(QSize(40, 50));原创 2021-04-07 10:42:05 · 758 阅读 · 0 评论 -
QT:从外部拖拽文件到QWidget中,获取其文件的路径(单文件和多文件)
程序运行实例实现步骤1、启用拖放事件setAcceptDrops(true);2、重写 dragEnterEvent 和 dropEvent 事件//拖动进入事件void Widget::dragEnterEvent(QDragEnterEvent *ev){ if(ev->mimeData()->hasUrls())//是否是文件路径 { ev->accept();//接收拖动进入事件 } //e..原创 2021-03-30 15:04:13 · 1414 阅读 · 4 评论 -
QT:简单日志文件处理
目录功能使用方法日志输出结果log文件功能程序在debug模式下, 正常输出 程序在release模式下,输出信息到日志文件上面日志文件统一存放在exe所在目录的上一级目录logDir下,以当天的日期时间命名日志文件保存七天。使用方法IDE:Qt Creator1、将 log_out.h 和 log_out.cpp添加进项目。2、pro文件加入以下代码,//该代码解决release模式下,输出的日志信息不显示文件名,行号等信息D...原创 2021-03-26 17:22:22 · 788 阅读 · 0 评论 -
QT:基于QWebEngineView类的一个简单浏览器示例
程序演示项目下载项目环境:vs2013 + qt5.7项目是在vs当中写的,如果因为环境问题不能运行代码的话,需要自己配置环境复制我的代码,差不多两百多行代码,已上传百度云盘云盘链接:https://pan.baidu.com/s/1LFfLX-ZD1erjYsiQtcVjvw 提取码:aa47...原创 2021-03-19 10:20:27 · 524 阅读 · 0 评论 -
QT:QWebEngineView里面的页面链接点击无反应的解决方法
通过继承QWebEngineView重写createWindow函数实现,代码如下:#pragma once#include <QWebEngineView>#include <qwebenginepage.h>#include <qurl.h>class WebView : public QWebEngineView{ Q_OBJECTpublic: explicit WebView(QWidget *parent = nullptr)原创 2021-03-17 14:46:39 · 4329 阅读 · 3 评论 -
QT:QProcess类,判断某个进程是否存在
目录代码使用示例代码bool IsProcessExist(QString processName){ QProcess process; process.start("tasklist"); process.waitForFinished(); QByteArray result = process.readAllStandardOutput(); QString str = result; if(str.contains(pro.原创 2021-03-16 11:32:14 · 2598 阅读 · 0 评论 -
QT:QSS样式总结(后续更新)
QListWidgetQListWidget{ outline:0px; //去除item选中时的虚线框}QListWidget::item{ height:40; //item高度}QListWidget::item:hover{ background: red; //悬停时item背景颜色}QListWidget::item:selected{ background: rgb(170, 170, 170);//选择item原创 2021-03-05 09:20:49 · 1064 阅读 · 3 评论 -
QT:QWidget的一些实用操作
判断鼠标是否在某个部件的上面QLabel label;if(label.underMouse()) //如果在,为真原创 2021-03-04 14:38:35 · 396 阅读 · 1 评论 -
QT:基于moveThread方法,优雅的关闭一个线程
目录简述程序演示示例代码简述其操作方式很简单,就是在线程执行处通过使用标记位的方式来停止线程。QT内部其实已经帮我们写好了,我们在合适的地方调用就行了其标记位函数是以下两个:QThread::currentThread()->requestInterruption(); //请求中断 QThread::currentThread()->isInterruptionRequested() //当接收到上面中断请求后,该函数返回true...原创 2021-02-25 14:27:51 · 4360 阅读 · 0 评论 -
QT: 最小化窗口到托盘图标
当只有一个窗口的时候,使用hide()函数隐藏窗口会使得程序直接结束,无法达到窗口隐藏在托盘图标显示的效果。加入setWindowFlags(Qt::Tool); 这条代码可以解决这两个问题,1、窗口下方任务栏中无程序图标显示2、当只有一个窗口的时候且创建了托盘图标的时候,使用hide()隐藏窗口不会让程序直接退出。效果图:Widget示例代码#include "widget.h"#include "ui_widget.h"#include <QDebu...原创 2021-01-25 11:35:50 · 2375 阅读 · 0 评论 -
Qt:QTableWidget用法总结(持续更新)
目录设置item数据设置带icon的item数据在item中加入Widget控件、读取widget信息去除水平和垂直表头表格内容禁止双击编辑单击item选择一行数据item设置背景色,字体颜色,位置居中根据表格的高度,自适应行高根据表格的宽度,自适应列宽取消item点击效果设置item数据 tableWidget->setItem(0,0,new QTableWidgetItem("Jan")); tableWidget->s.原创 2021-01-19 14:15:06 · 2663 阅读 · 0 评论 -
Qt:在windows上判断进程是否在运行
目录实现原理:进程名字获取:代码示例实现原理:通过QProcess类执行cmd命令(tasklist),获取当前的进程列表,然后根据指定的进程名和返回的结果进行比对,从而判断进程是否在运行进程名字获取:打开任务管理器 -》 右键点击某个进程 -》 点击属性 -》 最后执行画面如下图:代码示例//注意:需要包含头文件#include <QProcess>bool Widget::Whet...原创 2021-01-19 11:37:03 · 3999 阅读 · 1 评论 -
Qt Charts 图表组件(折线图)
目录效果图代码实现效果图代码实现pro文件添加: QT += charts头文件使用:#include <QtCharts>using namespace QtCharts; void Widget::CreateChart(){ //创建图表 QChartView* chartView = new QChartView(this); chartView->resize(this->size())原创 2021-01-15 15:02:16 · 1939 阅读 · 1 评论 -
QT线程的三种使用方法(1、重写run,2、moveToThread,3、QtConCurrent::run)
s原创 2020-12-26 14:45:27 · 1717 阅读 · 0 评论 -
QSystemTrayIcon类:系统托盘图标
目录创建菜单(QMenu)和菜单的项(QAction)创建系统托盘,并添加菜单托盘通知弹窗创建菜单(QMenu)和菜单的项(QAction)//初始化一个菜单和两个项目QMenu* trayMenu = new QMenu(this);//菜单QAction* showAction = new QAction(tr("显示"));//项1QAction* exitAction = new QAction(tr("退出"));//项2//菜单添加项trayMenu-&.原创 2020-12-08 22:11:48 · 1029 阅读 · 0 评论 -
QT类型转换
QString转const char *QString qstr = "hello";std::string str = qstr.toStdString();const char* cstr = str.c_str();qDebug()<<QString::fromLocal8Bit(cstr);QString 转 char *QString qStr = "hello";std::string stdStr = qStr.toStdString();char*.原创 2020-12-05 10:11:15 · 144 阅读 · 0 评论 -
QT: QSetting类设置软件开机自动启动
通过写入注册表和移除注册表信息实现软件开机自启动void SetAutomaticSoftwareStartup(bool isBoot){ //QSettings提供与操作系统无关的应用程序设置,windos下通常存储在注册表中 //QSettings::NativeFormat:使用最适合平台的存储格式存储设置。 QSettings reg("HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\原创 2020-12-05 10:00:42 · 372 阅读 · 0 评论 -
QProcess类 :(qt启动一个外部exe程序,带参exe程序,cmd命令)
目录执行cmd命令启动一个外部exe程序示例启动一个带参数的exe程序示例执行cmd命令QProcess program;QString cmd = "shutdown -s -t 120";program.start(cmd);program.waitForFinished();启动一个外部exe程序示例QProcess program;QString cmd = "C:\\meetsystem\\MeetClient\\bin\\MeetClient2.exe";program.st原创 2020-12-02 17:27:16 · 6971 阅读 · 4 评论 -
QT:自带框架安装包制作
此篇文章为转载,原创地址:https://blog.csdn.net/mars_xiaolei/article/details/83825447?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-5&spm=1001.2101.3001.4242目录Qt Installer Framework 概述下载Qt Installer Framework安装Qt Installer Framework程序打包发布创建安装包程序Qt In.转载 2020-08-03 20:17:47 · 2855 阅读 · 0 评论 -
QT:创建基类为QWidget的圆角矩形窗口
目录实现过程实现代码运行结果实现过程实现圆角矩形背景过程有两步操作:1.首先需要设置为无边框窗口和窗口背景透明2.通过绘画事件绘制带有圆角矩形的背景图下面是我自己通过ps制作的一个圆角矩形背景图:实现代码main.cpp#include "widget.h"#include <QApplication>#include "mywindow.h"int main(int argc, char *argv[]){ QApplication a(argc, a原创 2020-08-02 17:25:56 · 1107 阅读 · 1 评论 -
QT:颜色拾取器的实现
前言思路:首先需要获取到鼠标的x和y坐标点,然后获取鼠标坐标点的像素点。将像素点的rgb分离出来显示。最后label上显示这个像素点的RGB如果想要实时的显示这些数据的话,使用的是定时器一直调用函数showColorValue就行了核心代码://获取桌面x,y坐标点宽度1,高度1的像素QWindow window;QPixmap pixmap = window.screen()->grabWindow(QApplication::desktop()->winId(),x,y,1,1)原创 2020-05-29 22:58:02 · 2414 阅读 · 1 评论 -
QT:QSettings类,实现界面配置记忆功能
目录QSettings类的基本使用示例代码QSettings类的基本使用写入配置文件 //打开配置文件,写入宽高 //该构造函数使用的参数1:配置文件的路径,参数2:使用ini格式进行读写 QSettings setting("./config.ini",QSettings::IniFormat); setting.setValue("width",this->width()); //对应的键值进行写入数据(这里写入的是程序窗口的宽度) setting原创 2020-05-26 18:29:43 · 1899 阅读 · 0 评论 -
QT中的Json解析和生成
目录说明Json解析Json生成说明首先说明一下解析和生成这个Json文件需要用到Qt的哪些类:#include <QJsonDocument>#include <QJsonArray>#include <QJsonObject>看上图, 我用不同颜色的矩形线条标明了它们所在的不同层次。Json文件你可以把它看成一层一层得包...原创 2020-03-03 16:52:19 · 509 阅读 · 0 评论 -
QT QListWidget 控件
UI拖入QListWidget控件,在mainwindow.cpp的构造函数中,创建QStringList,然后将之添加到ListWidget中。代码如图。然后,我们运行下程序可以看到显示的效果了。另一种方法逐个添加,同样在mainwindow.cpp构造函数中,我们添加代码:运行效果:如果想对单个项目进行各种设置的话,在mainwindow...原创 2019-06-02 12:31:08 · 795 阅读 · 0 评论 -
QT connect()连接函数
函数重载:连接函数后多种重载方法,常用的有:函数4个参数:发射信号的对象,发射的信号,接受信号的对象,要执行的槽; //按键单击信号连接到按键槽函数 //方法1: connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(on_pushButton_clicked())); //方法2: ...原创 2019-06-01 23:56:04 · 17071 阅读 · 2 评论 -
QT qrand()随机函数
在Qt中,生成随机数的函数为 qrand()。该函数是标准C++函数 rand 的线程安全版本。不过,如果我们仅仅只是调用该函数来生成随机数,那么每次得到的随机数都将是相同的,这是因为Qt生成的随机数严格来说是一个“伪随机”,它的产生是根据随机数种子计算得到的。如果种子相同,那么所得到的随机数也是相同的。因此,为了使我们的随机数看起来更为“随机”一些,我们在每次获取随机数之前都需要初始化一个不...原创 2019-06-01 23:16:01 · 25945 阅读 · 3 评论 -
QT 文件信息 QFileInfo
文件信息 QFileInfoQFileInfo 类提供了与系统无关的文件信息,包括文件的名称、在文件系统中的位置(路径)、文件的访问权限以及是否是一个目录或者符号链接等。QFileInfo 也可以获得文件的大小和最近一次修改/读取的时间,还可以获得Qt资源的相关信息。QFileInfo 可以使用相对路径或者绝对路径来指向一个文件。 QString QFileInfo::abs...原创 2019-06-12 21:30:10 · 1145 阅读 · 0 评论 -
QT MediaPlayer类播放音视频
概述:QMediaPlayer 可以播放音频和视频。如果要视频在界面上显示出来,需要其他类的辅助,比如QVideoWidget、QGraphicsVideoItem 或者是自定义的类。而像 GIF格式的动画类型,可以使用 QMovie 播放。界面显示通过 QVideoWidget 类或者 QGraphicsVideoItem 类。这两个类都属于 Qt MultimediaWidgets 模块...原创 2019-06-08 17:11:40 · 6917 阅读 · 0 评论 -
QT foreach 使用
文章转自:作者:Lomper 出处:http://www.cnblogs.com/lomper在标准C++中,并没有foreach关键字。但是在QT中,可以使用这一个关键字,其主要原因是QT自己增加了这一个关键字,就像slots和signals、emit等一样。增加的foreach关键字在编译时会进行预处理。其用法为:foreach (varItem , Items) /...转载 2019-06-09 15:53:17 · 665 阅读 · 0 评论 -
Qt 信号和槽机制
信号和槽机制概述:在GUI编程中,当改变了一个部件时,总希望其他部件也能了解到该变化。更一般来说,我们希望任何对象都可以和其他对象进行通信。例如,用户单击了关闭按钮,则希望可以执行窗口的 close() 函数来关闭窗口。为了实现对象之间的通信,一些工具包中使用了回调(callback)机制,而在QT中使用了信号和槽来进行对象间的通信。信号:声明一个信号要使用 signals 关键...原创 2019-06-04 15:55:48 · 420 阅读 · 1 评论 -
QT 文件操作 QFile
输入/输出设备QIODevice 类是 Qt 中所有 I/O 设备的基础接口类,为诸如 QFile、QBuffer 和 QTcpSocket 等支持读/写数据块的设备提供了一个抽象接口。QIODevice类是抽象的,无法被实例化,一般是使用它所定义的接口来提供设备无关的 I/O 功能。文件QFileQFile类提供一个用于读/写文件的接口,它是一个可以用来读写文本文件、二进制文件...原创 2019-06-12 21:30:00 · 29052 阅读 · 4 评论 -
QT 双缓冲绘图
实现过程:在缓冲区里创建一个画布,将缓冲区(pix)的内容复制给临时缓冲区(tempPix);在临时缓冲区上绘画一个矩形,然后在主部件绘画临时缓冲区的内容;判断是否完成绘制,如果已经完成绘制,那么更新缓冲区。将临时缓冲区的内容复制给缓冲区(为了第二次绘制时保存上一次绘制的图);当鼠标按下并移动时(这时进行第二次绘制),将缓冲区的内容复制到临时缓冲区去;实现代码:...原创 2019-07-08 17:05:48 · 1155 阅读 · 0 评论 -
QT QMouseEvent 鼠标事件
通常是重定义部件的鼠标事件处理函数来进行一些自定义的操作。Protected: void mousePressEvent(QMouseEvent *event); //鼠标按下事件 void mouseReleaseEvent(QMouseEvent *event); //鼠标释放事件 void mouseDoubleCl...原创 2019-06-30 16:03:06 · 15458 阅读 · 0 评论 -
QT QFileDialog 文件对话框
QFileDialog的静态函数: 静态函数 说明 getOpenFileName 获取用户选择的文件名 getSaveFileName 获取用户保存的文件名 getExistingDirectory 获取用户选择的已存在的目录名 ...原创 2019-07-07 11:23:24 · 3292 阅读 · 0 评论 -
QT 截屏
实现:截取整个屏幕以后图片保存到指定的地方cpp里添加头文件:#include <QDesktopWidget> //桌面部件#include <QWindow> //窗口#include <QScreen> //屏幕#include <QPixmap> ...原创 2019-07-07 11:47:23 · 1074 阅读 · 1 评论 -
QList模板类常用接口函数
遍历容器: QList<int> list; list<<1<<2<<3; for(int i = 0; i < list.size(); i++) { qDebug()<<list.at(i); }插入操作:insert()函数原型:void QLis...原创 2019-05-19 13:13:54 · 2134 阅读 · 2 评论