Qt
文章平均质量分 59
介绍常见的 Qt 相关问题以及解决方案。
Ruo_Xiao
己所不欲,勿施于人。
展开
-
windows10 下 vscode + cmake 编译 Qt6 代码
一、使用 cmake 建立工程二、安装 vscode 插件使用 vscode 打开当前工程,如下图所示:安装如下插件:CMake、CMake Tools 和 Qt tools 。三、编译快捷键:F7或者Ctrl + Shift + P,输入:CMake:Build结果会在工程内生成“build”文件夹。四、运行由于可执行程序根目录下没有 qt 相关 dll 文件,所以直接运行会出现一闪而过的问题,所以需要进入 build / Debug 目录,运行如下指令:.原创 2021-07-22 11:58:59 · 1647 阅读 · 4 评论 -
Qt / Qt5 事件(event)机制详解
一、简述事件主要分为两种:在与用户交互时发生。比如按下鼠标(mousePressEvent),敲击键盘(keyPressEvent)等。 系统自动发生,比如计时器事件(timerEvent)等。在发生事件时(比如说上面说的按下鼠标),就会产生一个QEvent对象(这里是QMouseEvent,为QEvent的子类),这个QEvent对象会按照下图所示的流程进行传递:源码部分如下:二、事件过滤器本质上是其他对象插入到当前对象中的间谍,该间谍专门捕获传入到当前对象的...原创 2021-06-26 11:21:41 · 1299 阅读 · 1 评论 -
Qt / 定时器
在 Qt 中使用定时器有两种方法,一种是使用 QObiect 类的定时器;一种是使用QTimer类。定时器的精确性依赖于操作系统和硬件,大多数平台支持20ms的精确度1.QObject类的定时器 QObject是所有Qt对象的基类,它提供了一个基本的定时器。通过QObject::startTimer(),可以把一个一毫秒为单位的时间间隔作为参数来开始定时器,这个函数返回一个唯一的整数定时器的标识符。这个定时器开始就会在每一个时间间隔"触发",直到明确的使用这个定时器的标识符来调用QObject...转载 2021-06-19 17:19:46 · 1806 阅读 · 0 评论 -
Qt / QPainter、QPen、QBrush 如何理解
之前一直不是很理解上述三个类,直到看到了一篇博客,真的是茅塞顿开啊!下面是该博客的部分内容:QPen 是画笔,用来绘制图形的轮廓线,以及定义轮廓线的颜色、样式和属性;QBrush是画刷,用来填充封闭图形,以及定义填充的颜色、样式和属性;QPainter是画家,他要使用画笔QPen和画刷QBrush,在画布(QPaintDevice)上画文字、图形、图片等。可以充当画布(QPaintDevice)的类(其子类)有:QWidget,QImage, QOpenGLPaintDevice, QPaged原创 2021-06-19 16:29:43 · 1013 阅读 · 0 评论 -
Qt / 窗体设置 Qt::WA_TranslucentBackground 为全黑的原因
4.5 版本发行以后,可以设置窗口属性Qt::WA_TranslucentBackground来设定该窗口透明显示,但是有一个问题,就是如果该窗口是个top level窗口,就会有标题栏(title bar), 在windows平台下,如果不把这个标题栏去掉(设置Qt::FramelessWindowHint 标志位就会去掉标题栏),那么将不会是透明效果,而是背景为全黑(我的实验结果是这样)...原创 2021-06-19 16:09:16 · 5888 阅读 · 0 评论 -
Qt / 坐标系统
每个 GUI 操作系统都有特定的坐标系统,坐标系统用于在图形界面程序中进行窗口、组件的定位(定位的前提就是要有坐标系统)及窗口部件的大小设置。其中定位类型有顶级窗口组件的定位、窗口内部的组件定位和窗口部件的大小设置。Qt中使用统一的坐标系统定位窗口部件的位置和大小。Qt的组件类提供成员函数在坐标系统中进行定位,如函数 x()、y()。QWidget类提供了窗口部件所需的坐标系统成员函数。其中上图外层坐标表示窗口在屏幕中的坐标,内层表示用户区,除去标题栏和最小化、最大化、关闭按钮的坐标,在坐标系中转载 2021-06-12 09:27:57 · 497 阅读 · 0 评论 -
Qt / QWidget、QFrame 区别
QFrame 是基本控件的基类,QWidget 是 QFrame 基类,关系如下:QWidget <- QFrame <- QPushButton,QLabel…我们经常会从 QFrame 或者 QWidget继承然后自定义一个复杂的widget,在设置样式表的时候它们就有一个大的区别。...转载 2021-06-09 21:41:08 · 6049 阅读 · 2 评论 -
Qt / 伪状态和子部件
伪状态 描述:checked button部件被选中:disabled 部件被禁用:enabled 部件被启用:focus 部件获得焦点:hover 鼠标位于部件上:indeterminate checkbox或radiobutton被部分选中:off 部件可以切换,且处于off状态:on 部件可以切换,且处于on状态:pressed 部件被鼠标按下:unchecked button部件未被选中子部件...转载 2021-06-06 10:05:27 · 383 阅读 · 0 评论 -
Qt / 颜色渐变 QLinearGradient、 QConicalGradient、QRadialGradient
1、QLinearGradientbackground: qlineargradient(x1:0,y1:0,x2:1,y2:0,stop:0 #F0BF62,stop:1 #444444);qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 rgba(0, 0, 0, 255),stop:0.33 rgba(0, 0, 0, 255),stop:0.34 rgba(255, 30, 30, 25...原创 2021-06-06 09:39:17 · 3720 阅读 · 0 评论 -
Qt / 模态对话框的实现
1、设置属性setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);setWindowModality(Qt::WindowModal); 2、设置父窗体3、调用时机原创 2021-06-06 08:25:46 · 1261 阅读 · 0 评论 -
Qt / 动态的切换控件样式的方法
1、通过 setStyleSheet 设置不同的样式。缺点是不同的样式分散在不同的代码中,无法集中管理。2、通过切换属性的方法设置不同的样式。可以将样式集中写在 q's原创 2021-06-05 12:24:58 · 1358 阅读 · 1 评论 -
Qt / 焦点事件
首先来说说为什么要设置焦点吧。设置焦点可以让应用更便捷。比如当你打开百度主页或其他带有编辑框的页面时,不需要先用鼠标点击编辑框就可以直接输入文字等信息到其中。这就是由于搜索框设置了焦点。一个空间要先设置它焦点事件的模式,即窗口如何接受焦点事件(通过鼠标单击、Tab键、不接受焦点事件等)用 void setFocusPolicy( Qt::FocusPolicypolicy) 设置获得焦点的方式Constant Value Desc...转载 2021-05-30 09:49:26 · 2428 阅读 · 0 评论 -
Qt / 对象树
一、什么是对象树?我们常常听到 QObject 会用对象树来组织管理自己,那什么是对象树?这个概念非常好理解。因为 QObject 类就有一个私有变量 QList<QObject *>,专门存储这个类的子孙后代们。比如创建一个 QObject 并指定父对象时,就会把自己加入到父对象的 childre() 列表中,也就是 QList<QObject *> 变量中。二、使用对象树模式有什么好处?好处就是:当父对象被析构时子对象也会被析构。举个例子,有一个窗口 Wind转载 2021-04-09 09:39:29 · 240 阅读 · 0 评论 -
Qt / QMainWindow、QDialog、QWidget
在 Qt 中,我们将窗口和控件统称为部件(Widget)。窗口是指程序的整体界面,可以包含标题栏、菜单栏、工具栏、关闭按钮、最小化按钮、最大化按钮等。控件是指按钮、复选框、文本框、表格、进度条等这些组成程序的基本元素。一个程序可以有多个窗口,一个窗口也可以有多个控件。QWidget 是所有用户界面元素的基类,窗口和控件都是直接或间接继承自 QWidget,QMainWindow、QWidget、QDialog 三个类就是用来创建窗口的,可以直接使用也可以继承后再使用。QMainWindow转载 2021-04-07 16:41:15 · 520 阅读 · 0 评论 -
Qt / Moc 和信号 - 槽解析
版本 Qt5.12.3 moc_test.cpp 位于可执行文件目录下,其余源代码都位于 Qt5.12.3\5.12.3\Src\qtbase\src\corelib\kernel 中。一. MOC1.1 简介元对象编译器 moc(Meta-Object Compiler)是 Qt 对 C++ 的扩展。可以先把它看作一个代码生成器。以 test 类为例,构建项目时,moc 读取 C++ 头文件。如果在 test.h 中找到 Q_OBJECT 宏,它将生成一个 moc_test.cpp,其中包含转载 2021-04-07 14:16:01 · 1142 阅读 · 0 评论 -
Qt5 中 QWebEngineView 的使用,让桌面客户端和 web 端友好通信
一、本文结构Qt5 中 web 开发的基本配置,工程搭建。 加载 HTML 文件。 Qt 界面窗口调用 HTML 中的 JavaScript 函数(Qt 调用 js) Qt 界面窗口获取 HTML 中 Js 函数的返回值。 Web 端消息主动通知到 Qt 界面(js 通知 Qt)。二、基本配置,工程搭建(1)Qt 安装时要安装 web 开发组件,本案例采用 Qt5.9.6 vs2015 开发环境。(2)新建 Qt Gui 工程要首先勾选以下三个组件(3)qwebchannel.转载 2021-03-16 21:43:37 · 2820 阅读 · 0 评论 -
Qt5 常见的控件类关系
2018-01-19 创建人:Ruo_Xiao开发环境:Qt 5.2.1邮箱:xclsoftware@163.com1、QWidget、QDialog和QMainWindow的关系 2、常用控件的关系原创 2018-01-19 16:44:52 · 745 阅读 · 0 评论 -
Qt 生成 ui 对应的 h 文件和 cpp 文件的方法
2018-04-04 创建人:Ruo_Xiao开发环境:Qt 5.2.1邮箱:xclsoftware@163.com将ui文件copy到uic.exe同一目录下(qt的安装目录中bin下)。打开cmd,输入上述目录的路径。 输入:uic Com.ui -o Com.h uic Com.ui -o Com.cpp上述两条指令分别生成了h文件和cpp文件。...原创 2018-04-04 11:48:00 · 6192 阅读 · 0 评论 -
Qt 编译时报错“退出,退出代码2”的原因
---------------------------------------------- 创建人:Ruo_Xiao-- 邮箱:xclsoftware@163.com--------------------------------------------1、报错如下:2、原因:工程路径中存在中文,如上图中的“测试”。(SAW:Game Over...原创 2018-10-26 10:46:14 · 6981 阅读 · 2 评论 -
Qt 快捷键
------------------------------------------------- 创建人:Ruo_Xiao-- 开发环境:Qt 5.2.1-- 邮箱:xclsoftware@163.com-----------------------------------------------Esc 切换到代码编辑状态 F1 查看帮助 F2...原创 2018-10-26 16:47:10 · 187 阅读 · 0 评论 -
Qt5 使用 #pragma 加载 lib 文件的注意事项
----------------------------------------------- 时间:2018-12-06-- 创建人:Ruo_Xiao-- Qt5.2.1 和 VS2010 -- 邮箱:xclsoftware@163.com---------------------------------------------一、前提该工程名字是“Qt_Test_1”,在该...原创 2018-12-06 16:48:00 · 3815 阅读 · 0 评论 -
Qt / 查找可执行程序的依赖库
使用工具:windeployqt过程:1、打开 Qt 5.14.2 (MSVC 2017 32-bit)。2、cd 至 xxx.exe 所在的目录。3、执行指令:windeployqt xxx.exe 。(SAW:Game Over!)原创 2020-07-08 21:10:11 · 1028 阅读 · 0 评论 -
Qt / 如何解决移动了 Qt 的项目,但是 Qt 在原目录下生成编译文件的问题
网上有人说直接删除 Qt 工程目录下的 xxx.pro.user 文件即可,本人的 Qt 版本是 14.2,删除再打开之后整个工程不能使用了,不得已又把删除的文件找回。后来想到,该文件就是一个文本文件,记录了项目的配置信息,里面包含编译文件生成目录,直接修改即可呀。所以,我用 vscode 打开这个 Qt 工程,全局搜索之前工程所在的路径,直接替换成新的工程目录,重启即可。(SAW:Game Over!)...原创 2020-07-09 09:50:27 · 1289 阅读 · 0 评论 -
Qt / SIGNAL、SLOT、signals、slots、emit 关键字含义
一、SIGNAL、SLOT源码路径:/home/(name)/Qt5.14.2/5.14.2/Src/qtbase/src/corelib/kernel/qobjectdefs.hQ_CORE_EXPORT const char *qFlagLocation(const char *method);#ifndef QT_NO_META_MACROS #ifndef QT_NO_DEBUG // Debug #define QLOCATION "\0" __FILE原创 2020-10-12 10:12:30 · 3269 阅读 · 1 评论 -
Qt / 对 C++ 的拓展有哪些
元对象系统:包含 Q_OBJECT 宏的文件(.h,.cpp 等),需要 moc(可执行程序)预处理,生成 moc_xxx.cpp 文件。资源系统:.qrc 文件 需要 rcc(可执行程序)进行预处理。界面系统:.ui 文件 需要 uic(可执行程序)进行预处理。(SAW:Game )...原创 2020-10-18 07:24:47 · 232 阅读 · 0 评论 -
IDE / Qt / 浅谈 qmake 之 pro、pri、prf、prl文件
一、 *.proqmake 的工程(project)文件,栗子:这是一个典型的 Qt 示例程序的 .pro 文件(propriprfprl.pro):TEMPLATE = appCONFIG += QTQT += core guiTARGET = propriprfprlSOURCES += main.cpp/ widget.cppHEADERS += widget.hFORMS += widget.ui前面 3 行是 qmake 的默认值,我们都可转载 2020-11-19 16:03:19 · 598 阅读 · 0 评论