![](https://img-blog.csdnimg.cn/20200814223940786.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Qt基础
文章平均质量分 57
分享Qt基础开发技术,开发环境搭建,基本控件得使用,解决Qt开发时的各种疑难杂症
令狐掌门
C++程序员,出版过《C++零基础入门视频教程》、《Qt高级进阶视频教程》、《OBS源码分析与桌面录制视频教程》、《PyQt PySide6零基础入门与项目实战》。
展开
-
我的开源项目:C++ Qt高仿QQ影音视频播放器
C++ Qt高仿QQ影音视频播放器原创 2022-02-22 23:01:09 · 4392 阅读 · 1 评论 -
vs2022 qt开发环境配置
vs2022 qt vsaddin插件已经更新,可以下载安装,链接:https://download.qt.io/archive/vsaddin/2.8.1/vs2022 qt开发环境具体可以参考我的这篇文章:https://mingshiqiang.blog.csdn.net/article/details/108015209qt版本可以选择5.15之后或Qt6.其它配置基本和vs2019 qt一至....原创 2022-01-23 14:39:49 · 5219 阅读 · 0 评论 -
VS2019 Qt开发环境搭建与配置
Qt是很优秀的图形界面跨平台开发框架,开发语言可以用C++, 也可以用python, 建议使用C++。windows上Qt开发环境可以使用QtCreator, 也可以使用VS + Qt, VS开发调试功能强大,本篇介绍VS2019 + Qt5.14开发环境的配置, 其它版本的类似。 VS下载链接:https://visualstudio.microsoft.com/zh-hans/vs/ VS2019 C++主要安装模块: 不............原创 2020-08-15 01:07:19 · 135967 阅读 · 84 评论 -
C++ Qt QMainWindow实现无边框窗口自定义标题栏可拖拽移动拉伸改变窗口大小
QMainWindow相对于QWidget多了dockedwidget功能,跟多人可能更喜欢用QMainWindow做主窗口,如果不需要dockedwidget功能,QMainWindow与QWidget做主窗口基本无差别。这里使用的是DWM API实现窗口阴影和圆角,圆角是windows窗口的圆角,不需要手动设置圆角大小。(1)在CFramelessWindowBase类设置窗口标志,去掉窗口边框,设置最大最小显示效果。(3)重写nativeEvent实现无边框窗口。自带窗口阴影、圆角、可拉伸,拖拽。原创 2024-04-24 14:40:04 · 817 阅读 · 0 评论 -
Qt move和setGeometry的区别
方法:这个方法用于同时设置小部件的位置和大小。会将小部件的左上角移动到坐标 (100, 100),并将其大小设置为宽度 200 和高度 150。都是用于管理窗口或小部件的位置的方法,通常在使用 Qt 编程时会用到。方法:这个方法用于设置小部件的左上角的坐标位置,它需要两个参数,即横坐标和纵坐标。运行这个示例,您将会看到一个窗口中包含了两个不同颜色的小部件,它们分别演示了。所以,如果您只需要改变小部件的位置而保持其大小不变,可以使用。方法会改变小部件的位置,但不会改变其大小。方法会改变小部件的位置和大小。原创 2023-10-19 09:58:32 · 1226 阅读 · 0 评论 -
C++ Qt QString类用法介绍
是 Qt 框架中的一个重要类,用于处理 Unicode 字符串。它提供了大量的功能,方便开发者处理、查询和操作字符串。这些是QString类中用于裁剪和截取字符串的一些常用方法。您可以根据需要选择适合您的情况的方法。建议查看 Qt 官方文档以获取更多详细的方法和描述。:去除字符串中多余的空格字符,并将连续的空格字符替换为一个空格。:根据指定的分隔符,截取字符串的一部分。:去除字符串开头和结尾的空格字符。:返回从指定位置开始的n个字符。:返回字符串的前n个字符。:返回字符串的后n个字符。原创 2023-10-17 15:38:22 · 424 阅读 · 0 评论 -
Qt拖拽文件到窗口、快捷方式打开
大部分客户端都支持拖拽文件的功能,本篇博客介绍Qt如何实现文件拖拽到窗口、快捷方式打开,以我的开源视频播放器项目为例,介绍拖拽视频到播放器窗口打开。如果是管理员权限,那么Qt拖拽文件的功能将被禁止使用,如果项目必须要用管理权限,可以考虑将管理员权限的功能独立为子进程,主进程是普通权限即可。如果有多层视频窗口该怎么写drag事件呢,比如主窗口上还加了好几层窗口,我这里是写到了视频播放窗口,然后将视频列表信息发信号到主窗口进行播放。当拖拽多个视频时,右侧播放列表会展开。(2)重写关于拖拽的事件。原创 2023-10-15 13:56:07 · 746 阅读 · 1 评论 -
Qt编译出现error: C2338: Type is not registered, please use the Q_DECLARE_METATYPE macro to make it known
如果有其它类型出现类似的错误,使用Q_DECLARE_METATYPE来声明即可。原创 2023-08-17 23:18:10 · 393 阅读 · 0 评论 -
Qt 6.5 LTS 更新说明
2023年4月3日 Qt 6.5 LTS 发布,更新的特性可参考如下链接:https://www.qt.io/blog/qt-6.5-lts-released原创 2023-06-22 23:23:42 · 324 阅读 · 0 评论 -
Qt安装时出现无法下载无法更新无法安装的bug
打开cmd, 添加镜像源启动qt安装程序,上面的命令是使用了清华源,其它系统可使用类似的命令进行安装Qt.原创 2023-06-22 23:14:09 · 603 阅读 · 0 评论 -
Qt无边框窗口,自定义标题栏,可拉伸,拖动,Qt5/6通用,windows, linux通用
gitee:https://gitee.com/linghuzhangmen/qtframeless截图Qt6.4可编译(1)自定义标题栏、可拖动、拉伸;(2)支持linux,windows;(3)客户区可自定义窗体, 实现各种布局;使用QtCreator打开pro文件即可,运行需要参考如下代码:欢迎提issiue.原创 2022-12-05 17:23:39 · 978 阅读 · 2 评论 -
qss美化Qt界面
Qt提供了类似前端css的样式表qss(Qt样式表)来进行界面优化,可以实现代码界面分离,像MFC这种需要进行控件重载才能实现。qss的使用方法如下: (1)在Qt设计器中对控件右键----改变样式表,可以填写qss语法来修改样式,这样是对单独的控件进行设置。 (2)在界面空白处改变样式表,是全局设置。 例如下面的界面:经过q......原创 2020-03-05 18:07:33 · 6732 阅读 · 2 评论 -
Qt调用ffmpeg录制屏幕
Qt调用ffmpeg录制屏幕原创 2022-06-15 12:52:08 · 5231 阅读 · 1 评论 -
QMap的使用与源码简析
QMap的概念和数学中的函数类似,是一种映射对应关系: y = f(x) 一个x对应一个y, 但是一个y可能还有多个x对应。QMap<Key, Value> 也是这种关系,不能有重复的Key, 可以有重复的Value, 并且QMap中的元素是按照Key进行排序,如果有重复的Key, 那么对......原创 2020-03-09 20:46:12 · 3169 阅读 · 0 评论 -
QVector用法详细介绍
QVector类是动态数组的模板类,顺序容器,它将自己的每一个对象存储在连续的内存中,可以使用索引号来快速访问它们。使用前需要包含头文件 #include <QVector> 下面介绍QVector的基本用法,先看看它的一些方法:构造函数QVector() //无参的构造函数QVector(int size) //构造一个大小为size个 值......原创 2020-03-08 22:53:52 · 28092 阅读 · 1 评论 -
Qt开发的程序怎么在别的电脑上使用
用Qt开发的软件,放到别人的电脑上,需要一些相应的dll, 应用程序才能启动, 编译模式是Debug.需要相应的带d的dll, release模式需要不带d的dll. 寻找这些dll其实很简单,一个命令就解决了。 例如我的开发环境是VS2017 Qt5.12.4 我是用的64位开发环境,那么需要把 D:\Qt\Qt5.12.4\5.12.4\msvc2...原创 2018-04-13 14:44:32 · 7071 阅读 · 1 评论 -
Qt应用窗口截图代码演示
网上有很多屏幕录制软件,作为程序员自己写一个录屏软件其实也是可以的,本篇介绍Qt屏幕录制功能的实现。 QScreen类提供了很多与屏幕相关的API, 例如抓屏API:QPixmap grabWindow(WId window, int x = 0, int y = 0, int w = -1, int h = -1); 传入窗口Id, 位置,宽高,就可以进行屏幕抓取了。 新建一个GUI项目,下面就把抓取的屏幕在Qt界面上显示出来, .h文件#pragma once#includ原创 2021-05-13 18:05:50 · 3541 阅读 · 0 评论 -
Qt去掉对话框边框并且窗口可移动的实现
Qt开发时,有时需要对窗口进行定制,例如去掉边框,做异形窗口等,做法比较简单,添加几句代码即可。现在构造函数中添加://去掉边框this->setWindowFlags(Qt::FramelessWindowHint); 此时,虽然去掉了边框,但是窗口无法移动,需要重写鼠标的按下,移动事件,在头文件中添加如下代码:void mousePr...原创 2019-08-10 22:18:47 · 5395 阅读 · 1 评论 -
Qt sender()用法详解
sender()是QObject类的方法,声明如下:QObject *sender() const; Qt助手的解释如下: Returns a pointer to the object that sent the signal, if called in a slot activated by a signal;otherwise it retur...原创 2020-02-29 14:10:14 · 12273 阅读 · 1 评论 -
Qt获取文件详细信息:QFileInfo的用法
通过类QFileInfo可以获取文件信息,选择一个文件,即可分析出该文件的信息。 QFileInfo类有很多方法,例如: bool exists() const; static bool exists(const QString &file); void refresh(); QString filePath() c...原创 2020-03-27 17:11:08 · 4971 阅读 · 0 评论 -
Qt监控目录文件变化:QFileSystemWatcher用法
Qt提供了目录文件变动检测功能的类QFileSystemWatcher,使用该类要想添加头文件 #include <QFileSystemWatcher> 先看看他的源码: bool addPath(const QString &file); QStringList addPaths...原创 2020-03-27 17:25:11 · 3449 阅读 · 5 评论 -
deepin安装Qt与调试环境的配置
deepin系统Qt安装方法1. 先检查是否有g++环境,输入 g++ --version 如果显示 bash : g++:未找到命令, 说明没有g++环境,输入以下命令,安装 sudo apt-get install g++2. 下载Qt linux版,Qt所有版本的下载地址 http://down...原创 2019-10-26 17:59:47 · 2878 阅读 · 0 评论 -
Qt QLabel样式表总结
Qt QLabel qss总结转载 2022-03-20 17:48:55 · 7154 阅读 · 2 评论 -
vs2019 qt打开ui文件闪退的解决办法
vs2019 qt打开ui文件闪退的解决办法原创 2022-03-20 16:30:33 · 4494 阅读 · 2 评论 -
C++ qt实现打开关闭状态按钮
效果图:上述这种按钮,用QCheckBox可以实现,只要在选择与未选择的状态设置不同的图片即可:选择未选择实现代码#include "widget.h"#include "ui_widget.h"#include <QMessageBox>Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); ui->原创 2022-03-14 21:24:50 · 4664 阅读 · 4 评论 -
QButtonGroup的使用
当有一组按钮时,可以共用一个槽函数,在该槽函数中在做处理,那么此时就需要用到QButtonGroup类了,例如有如下界面 可以把这四个按钮全部放到按钮组里,根据按钮的序号分别进行调用。1 QButtonGroup类常用方法简介(1)addButton,声明如下void QButtonGroup::addButton(QAbstractButton ...原创 2020-03-02 03:36:24 · 5050 阅读 · 2 评论 -
QMainWindow statusBar如何添加控件
在使用Qt开发客户端时,有时需要在底部状态栏显示一些信息,但是默认的statusBar并不能满足需求,此时,我们可以在statusBar上添加自定义控件,实现相应需求。可以去看看QStatusBar的声明,代码如下:class Q_WIDGETS_EXPORT QStatusBar: public QWidget{ Q_OBJECT Q_PROPERTY(bool sizeGripEnabled READ isSizeGripEnabled WRITE setSizeGripEnab原创 2022-02-25 22:39:02 · 3097 阅读 · 0 评论 -
Qt 串口通信软件开发教程
Qt5.7已经封装了关于串口操作的类QSerialPort,QSerialPortInfo等,不需要再使用第三方串口类。串口应用程序的开发,包括查找串口,打开串口,发送数据,读取数据等。完整程序源码,请点击【串口助手源码下载】。 先看看类QSerialPortInfo, Qt的解释如下: Provides information about existing serial p...原创 2018-06-19 15:09:55 · 3870 阅读 · 7 评论 -
Qt读excel获取exel数据
Qt提供了com对象操作的类QAxObject,可以通过该类读写execel数据,例如下图的excel:下面是Qt读excel并打印内容的代码:#include "widget.h"#include "ui_widget.h"#include <QAxObject>#include <QFileDialog>#include <QStandardPaths>#include <QDebug>Widget::Widget(QWidget *p转载 2022-01-23 19:27:09 · 2416 阅读 · 3 评论 -
VS2019 Qt win32项目如何添加x64编译方式
在创建VS2019 Qt项目时,一般需要选择是win32还是x64, 如下图如果选择了32位,会发现没有x64编译选项;选了x64, 就没有x86的编译选项。win32、x64只是程序位数的叫法,可以随便取名,下面介绍如何给vs2019 qt win32项目增加x64的编译方式,操作步骤如下:(1)(2)(3) 选择x64从此处复制设置也可设为空,我这里选择从x86复制。(4) 修改Qt版本再把Qt Installation改为64位的Qt需要注意的是,如果上一步的"从此处复制设置原创 2022-01-19 21:43:23 · 3146 阅读 · 0 评论 -
C++ Qt QColorDialog使用教程
Qt提供了颜色选择框,如下图:QColorDialog使用方法例如下面的代码,点击按钮弹出颜色选择框,选择颜色,改变QLabel的背景色#include "widget.h"#include "ui_widget.h"#include <QColorDialog>#include <QPalette>Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){原创 2022-01-15 17:12:29 · 1037 阅读 · 0 评论 -
Qt获取windows文档、下载、图片等目录路径
在客户端开发时,有时需要一些默认路径,例如打开文件,有些电脑不分区只有C盘,这时可以把初次打开的路径设为“文档”,文档、视频等默认路径都和电脑用户名相关,不好直接指定。Qt提供了QStandardPaths类可以直接获取这些路径.在QStandardPaths类有个枚举体StandardLocation,定义了上述的位置信息,如下所示:enum StandardLocation { DesktopLocation, //桌面 DocumentsLocation,原创 2022-01-05 22:41:25 · 2607 阅读 · 2 评论 -
C++ Qt获取windows任务栏的位置及高度
在客户端应用开发时,有时需要获取任务栏的高度及位置来变换窗口、控件或提示消息的位置,Qt提供了类QDesktopWidget来获取窗体相应的信息,例如下面的代码:#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDesktopWidget>#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)原创 2021-12-28 22:31:57 · 3504 阅读 · 0 评论 -
C++ Qt QString转string乱码的处理方法
QString在转string时,如果有中文,会出现乱码,例如下面的代码#include <QCoreApplication>#include <QDebug>#include <string>#include <iostream>using namespace std;int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QString qstr原创 2021-12-16 21:55:53 · 4873 阅读 · 2 评论 -
C++ Qt显示OpenCV图片【致敬浅墨_毛星云】
用QLabel可以显示OpenCV的Mat图片,本demo用的是OpenCV4, Qt界面如下: 点击按钮加载图片并显示,代码如下:void OpenCVTest::on_btnLoadimg_clicked(){ QString filename = QFileDialog::getOpenFileName(this, tr("选择图像"), "", ...原创 2020-04-19 15:49:42 · 1187 阅读 · 0 评论 -
Qt CEF融合技QCefView使用教程
如果从事C++客户端开发,对CEF应该不陌生,当C++界面需要和web交互时,CEF是很好的解决方案,当然Qt也提供了QWebEngineView来进行web交互,最近在万兴喵影的安装目录看到了QCefView.dll,之前也听说过这个库,没在意,没想到还真有人用到项目里面,于是决定自己编译写个demo看看......原创 2021-12-11 00:34:34 · 11597 阅读 · 18 评论 -
Qt设置按钮背景图片
用qss可以修改按钮的样式,但是一些复杂的图形用图片来做显示效果更好,下面给出Qt按钮添加图片的方法,直接用setIcon的方法,图片会被缩放,下面的方法正常显示//设置按钮图标,按钮的默认大小是 30*30,可以自己指定void setButtonImage(QPushButton *button, QString image){ QPixmap pixmap(im...原创 2020-01-01 02:32:34 · 23539 阅读 · 0 评论 -
Qt定时器QTimer使用教程与代码演示
Qt提供了定时器类QTimer, 在使用时需要包含头文件#include <QTimer>QTimer类方法介绍:void start(int msec); 开启定时器,定时间隔的msec毫秒void stop(); 结束定时QTimer信号:void timeout(QPrivateSignal); 在链接定时器时,需要绑定该信号QTimer的基本使用下面介绍如何使用Qt定时器实现一个秒表。新建一个Qt MainWindow项目,界面如下:时间的显示用的LCD控原创 2021-11-20 17:42:59 · 6550 阅读 · 0 评论 -
Qt判断文件夹路径、文件是否存在不存在则创建
Qt判断文件夹/目录是否存在Qt判断文件夹/目录是否存在,可以使用QDir类的exists方法来判断,在使用时需要包含头文件#include ,例如下面的代码:#include <QCoreApplication>#include <QDir>#include <QDebug>////// \brief 判断文件夹是否存在,不存在则创建/// \param fullPath/// \return///bool DirExist(QString ful原创 2021-11-17 22:48:39 · 12069 阅读 · 0 评论 -
Qt鼠标相对位置、绝对位置、窗口位置、控件位置、控件大小、控件绝对位置
在Qt界面开始时,有时需要根据鼠标位置,控件位置来确定小窗口的弹出位置,本篇博客来分析Qt的各种位置。 先声明两个名词:绝对位置:相对于桌面窗口原点(0,0)的位置相对位置:相对于应用程序原点(0,0)的位置坐标系 在讨论各种位置之前,我们需要了解电脑桌面坐标系、应用程序坐标系。一般都是规定左上角为坐标原点,水平向右为x正,竖直向下为y正,如下图: 比如我的电脑屏幕是2500*1600,对于桌面坐标系,左边是0,右边是2500,上面是0,下面是1600。 创建一个Qt GUI原创 2021-09-04 16:06:59 · 12141 阅读 · 3 评论