
QT
文章平均质量分 53
自先沉稳~
这个作者很懒,什么都没留下…
展开
-
Qt的三大窗口dialog、widget、mainwindow区别简介
一、dialog有exec函数,如果是dialog窗口,后边的窗口时不可选的;这个dialog窗口只是为了给人们提供更好的可视化操作,但是对于程序员而言,这个操作并不是立刻执行的;而是当在窗口选择关闭后,才将选择的结果返回给后台,后台才可以根据选择的结果进行相应的操作。二、widget主要是在上面放置布局和控件;所有用户界面对象的基类。窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以转载 2021-03-26 10:49:28 · 4382 阅读 · 0 评论 -
QT之模态与非模态
模态对话框:简单一点讲就是在弹出模态对话框时,除了该对话框整个应用程序窗口都无法接受用户响应,处于等待状态,直到模态对话框被关闭。这时一般需要点击对话框中的确定或者取消等按钮关闭该对话框,程序得到对话框的返回值(即点击了确定还是取消),并根据返回值进行相应的操作,之后将操作权返回给用户。这个时候用户可以点击或者拖动程序其他窗口。说白了就相当于阻塞同一应用程序中其它可视窗口的输入的对话框,用户必须完成这个对话框中的交互操作并且关闭了它之后才能访问应用程序中的其它窗口。其实模态对话框的作用就是得到用户选择的原创 2021-03-26 10:47:08 · 1299 阅读 · 0 评论 -
QWidget派生类对象作为子窗口背景样式如何设置生效(父窗口设置了样式)
在项目中,我们经常需要自定义一个继承Qwidget派生类的类,当这个类的对象为独立窗口时,一点问题都没有。当我们作为子窗口时,qt会自动将子窗口的背景设置为透明(其他控件均显示),同时这个子窗口的setStyleSheet方法是无效的。有的方法就是重写paint函数或者用画笔brush一个rect的背景色,但是他们都比较麻烦同时不是很好用。解决方案:setStyleSheet("background-color:rgb(0, 255, 127);color:red;");setAttribute(Qt转载 2021-03-24 09:37:09 · 469 阅读 · 0 评论 -
LIBS+=到底如何用!
语法是 LIBS+= -L直接打地址 -l直接打库名注意点:-L后面没有空格,直接跟着地址,然后空格,-l后面是去掉lib之后的文件名。一个例子:如我们有E:\CLibraries\NewmatL\debug\libNewmatL.a这个文件,则:LIBS += -LE:\CLibraries\NewmatL\debug\ -lNewmatL或者如果需要编译的pro在E:\CLibraries\TEST-build-desktop下,则可以:NEWMAT_ROOT = …\NewmatLLI原创 2021-03-22 16:25:39 · 4392 阅读 · 0 评论 -
STL容器遍历删除时erase操作(iter++)
我们知道STL中结点类容器(如:list,hash_map)遍历时进行删除时,需要这样做:for(list::iterator iter = m_list.begin(); iter != m_list.end(); ){if(需要删除){m_list.erase(iter++);}else++iter;}而不能这样:for(list::iterator iter = m_list.begin(); iter != m_list.end(); ++iter){if(需要删除){转载 2021-03-09 09:46:30 · 1377 阅读 · 0 评论 -
QT/Linux常见错误总结(不定期补充)
工作一段时间后发现在平时隔一段时间总会遇到一些重复的问题,但是又记不清具体的解决办法,只能再一次去百度查找解决方法,耗时而且效率低,所以今天起就将自己日常中遇到的一些问题进行总结分析,加深印象的同时也为以后做准备。**问题总结分析列表:**问题:1.已经包含头文件,仍然出现错误“未声明的标识符”。解决方案:1.引入头文件是有顺序之分的,不能随意的放置头文件,位置也要放正确。2.可能在文件拷贝或者移动过程中,对应的变量在不同的编码情况下会出现不可见的字符修改,直接相关的变量的声明删掉重新定原创 2021-02-22 15:22:55 · 896 阅读 · 0 评论 -
QTimer用法(固定某一时间点启动)
今天遇到一个需求,就是每晚12点定时查询数据库信息并判断是否进行删除。刚开始设计就是简单的思路:每分钟启动一次定时器,判断当前时间是否为对应时间,是否进行相关操作,伪代码如下: m_timer = new QTimer(this); // true 单次触发,false 多次触发 m_timer->setSingleShot(false); //每分钟调用一次 m_timer->start(1*1000*60); //定时器触发信号槽原创 2021-02-01 16:01:53 · 1601 阅读 · 0 评论 -
QT中QString 格式化 arg前面自动补0
如这样的字符串: 00:01:23将3个int转化为字符串时,使用arg的其它参数;代码如下:QString str = QString("%1:%2:%3").arg(0,2,10,QLatin1Char('0')).arg(1,2,10,QLatin1Char('0')) .arg(23,2,10,QLatin1Char('0'));arg中第二个参数表示字符串的位数,第三个参数表示int的进制,第4个参数表示自动补全的字符;如,改为:QString str = QString("%1:%转载 2021-01-26 15:41:53 · 870 阅读 · 0 评论 -
QT工程pro文件TEMPLATE变量说明
QT工程pro文件模板变量(TEMPLATE)模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:app - 建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。lib - 建立一个库的makefile。vcapp - 建立一个应用程序的Visual Studio项目文件。vclib - 建立一个库的Visual Studio项目文件。subdirs - 这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成ma转载 2021-01-20 10:10:45 · 611 阅读 · 0 评论 -
QT样式表StyleSheet(QSS)的使用与加载
1、相关链接官网的样式表链接:http://doc.qt.io/archives/qt-4.8/stylesheet.html各种控件的样式:http://doc.qt.io/archives/qt-4.8/stylesheet-reference.htmlQSS语法:http://www.w3school.com.cn/css/css_syntax.asp使用样式表的3种方法:《Qt 之 样式表的使用——设置样式的方法 》https://blog.youkuaiyun.com/goforwardtostep/原创 2021-01-14 09:55:40 · 2764 阅读 · 0 评论 -
QT之QElapsedTimer计时
QElapsedTimer提供了一种快捷的计算流逝时间的方法。它通常被用来计算两个事件或操作之间过去了多久。并且,该类的方法非常类似于我们之前讲过的QTime类的三个计时函数,所以,我们可以很快速的在使用这两个类的代码之间进行移植。但是,不像QTime,QElapsedTimer会尽可能的使用某种单调时钟。这也就意味着,系统时间的修改对它不会产生影响,同时也没办法将QElapsedTimer对象转换成人类可读的时间格式。这个类主要的使用方法就是测量一个操作耗时多久,例子如下: QElapsedTime原创 2021-01-13 11:19:13 · 2926 阅读 · 0 评论 -
QConcurrent、QFuture和QFutureWatcher
QFuture:QFuture类代表了一个异步调用的结果。而这个异步调用需要使用Qt Concurrent架构的API。QFuture让线程可以通过某个后期产生的结果来实现同步。这个结果可以是任何拥有默认构造函数和拷贝构造函数的类型。如果这个结果在调用其result(), resultAt(), 或者 results()方法时还没有准备好,QFuture将会一直等到结果准备好。可以通过它的isResultReadyAt()方法来检测结果是否准备好。对于QFuture对象需要准备多个结果的情况,其resu原创 2021-01-13 10:56:08 · 1080 阅读 · 1 评论 -
路径中的“\”和“/”以及相对路径和绝对路径
1.路径中使用斜杠/和反斜杠\的区别Unix使用斜杆/ 作为路径分隔符,而web应用最新使用在Unix系统上面,所以目前所有的网络地址都采用 斜杆/ 作为分隔符。Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了,为了不混淆,所以采用 反斜杠\ 作为路径分隔符。所以目前windows系统上的文件浏览器都是用 反斜杠\ 作为路径分隔符。随着发展,DOS系统已经被淘汰了,命令提示符也用的很少,斜杆和反斜杠在大多数情况下可以互换,没有影响。知道这个背景后,可以总结一下结论:(1)浏览器地址栏转载 2021-01-13 10:21:27 · 3288 阅读 · 0 评论 -
QT中文件读取和保存
QImage类提供与硬件无关的图像表示,允许直接访问像素数据,并可用作绘图设备。Qt提供了四个用于处理图像数据的类:QImage,QPixmap,QBitmap和QPicture。 QImage专为I / O和直接像素访问和操作而设计和优化,而QPixmap专为在屏幕上显示图像而设计和优化。 QBitmap只是一个继承QPixmap的便捷类,确保深度为1.最后,QPicture类是一个记录和重放QPainter命令的绘图设备。因为QImage是QPaintDevice子类,所以可以使用QPainter直原创 2021-01-11 16:07:03 · 2055 阅读 · 0 评论 -
qt split() 使用
定义和用法split() 方法用于把一个字符串分割成字符串数组。示例String a[]=str.split(",");//把str这个字符串用逗号“,”进行分割,分割后的字符串数组放在a[]中,比如 111,222,333 那么a[0]=111 a[1]=222 a[2]=333...转载 2021-01-08 16:33:18 · 3362 阅读 · 0 评论 -
QT重绘之update和repaint详解
Qt里面的重绘和Windows编程里面的重绘差不多。但是Qt的重绘更有特色,更加智能。在讲之前,先说说paintEvent()paintEvent()是一个虚函数槽(slot),子类可以对父类的paintEvent进行重写。当调用update(),repaint()的时候,paintEvent()会被调用,另外,当界面有任何改变的时候,paintEvent()也会被调用,这种界面的改变包括界面从隐藏到显示,界面尺寸改变,当然还包括界面内容改变的时候会被调用。paintEvent()是已经被高度优化过的函转载 2021-01-03 15:04:31 · 1038 阅读 · 1 评论 -
QString::number()
1.写在前面Qt提供非常多使用的工具类,如排序、类型转换、格式转换等。如果是经常使用则信手拈来,否则间隔时间长了,很基础的工具类都需要查看文档或者百度。所以做个言简意赅的记录笔记,增加印象同时方便查阅。2.QString::numberQString::number是将数数字(整数、浮点数、有符号、无符号等)转换为QString类型,常用于UI数据显示。查看API接口,number提供如下几种类型的转换,适合各种场合调用。static QString number(int, int base=10)转载 2020-12-16 15:45:11 · 31649 阅读 · 2 评论 -
qt:dialog的accept()概念
本篇,会重点讲述模式对话框,以及exec()的用法,accept()和accepted的概念。一.非模式对话框非模式对话框是和同一个程序中其它窗口操作无关的对话框。在字处理软件中查找和替换对话框通常是非模式的来允许同时与应用程序主窗口和对话框进行交互。调用show()来显示非模式对话框。show()立即返回,这样调用代码中的控制流将会继续。在实践中你将会经常调用show()并且在调用show()的函数最后,控制返回主事件循环。非模式对话框,说白了,就像你打开了好几个QQ聊天窗口,每个聊天窗口都是一个非转载 2020-12-16 14:45:29 · 4383 阅读 · 0 评论 -
Qt5之Lambda表达式
c11新特性中加入了lambda表达式,所以Qt 也支持,只需在.pro文件中加入CONFIG += c++11直接上代码: #include<iostream>using namespace std;int main(){int a = 1;int b = 2;auto func = [=, &b](int c)->int {return b += a + c;};return 0;}我第一次看到上面的代码,是懵逼的,不少人应该和我一样。要是看得懂的原创 2020-12-06 16:42:15 · 331 阅读 · 0 评论 -
C++编译错误 error:cannot allocate an object of abstract type
错误:无法分配对象的抽象类型原因:在基类中声明的虚函数,没有在继承类中继承、实现。解决:将基类中声明的虚函数在继承类中继承实现,就可以new一个派生类了。转载 2020-12-04 18:04:17 · 1790 阅读 · 0 评论 -
Qt构建、运行、qmake的区别
qmake:根据实际环境创建项目文件.pro 并且运行qmake生成适当的Makefile。构建:构建是增量编译,只编译有变化部分。重新构建:是把所有部分都重新编译。运行: 有改动则根据已有的Makefile进行编译,执行;构建和重新构建时如果没有Makefile,会根据.pro文件等生成Makefile后再编译所以运行顺序应该是:qmake-构建-运行...转载 2020-12-03 16:37:12 · 1605 阅读 · 0 评论 -
Qt Creator编译,存在中文导致错误: error: C2001: 常量中有换行符
文章目录 问题简述 解决方法1:不使用英文 解决方案2:改变文件编码 解决方案3:使用偶数个中文或者奇数个中文最后加一个英文的点"."问题简述今天在跑别人的Qt程序时遇到了问题,编译时报了如下这些错误:1 error: C2001: 常量中有换行符2 error: C2062: 意外的类型“bool”3 error: C2065: “flag”: 未声明的标识符4 error: C2143: 语法错误: 缺少“)”(在“return”的前面)5 error:转载 2020-11-25 10:39:38 · 967 阅读 · 0 评论 -
MSVC与MinGW的区别
Qt 中有两种方式编译,一种是MinGW ,另一种MSVC。MSVC是指微软的VC编译器。MinGW是指是Minimalist GNU on Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库。它们都是很好用的编译工具,但是它们兼容的并不好。当你的项目使用MinGW编译的使用,想要用一个MSVC编译生成的库时就会有问题。使用MinGW编译项目的时原创 2020-11-18 10:00:56 · 12990 阅读 · 2 评论 -
Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。但是各种方法都有其注意事项,如果不注意则很容易陷入麻烦中。1:setStyleSheet()这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。即:①:该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图片!!②:同时:转载 2020-11-13 17:42:00 · 1552 阅读 · 0 评论 -
c++中的auto、const auto&
auto:在块作用域、命名作用域、循环初始化语句等等 中声明变量时,关键词auto用作类型指定符。const:修饰符 想要拷贝元素:for(auto x:range) 想要修改元素 : for(auto &&x:range) 想要只读元素:for(const auto& x:range)auto auto即 for(auto x:range) 这样会拷贝一份range元素,而不会改变range中元素;但是!(重点) 使用for(auto x:vector)时得到转载 2020-11-06 17:49:48 · 589 阅读 · 0 评论 -
Qt paintEvent事件显示图片文字
paintEvent事件可以重新绘制全部或者部分窗口,任何从QWidget派生的类都可以进行重绘。paintEvent事件的发生可能有以下几个原因:(1)repaint()或者update()被调用(2)这个窗体之前被隐藏,重新显示时(3)或者一些其他原因(官方文档这样写的)其中,update()不是立即调用paintEvent(),要等Qt返回主事件循环后才会进行,而调用repaint()会立即调用paintEvent()函数来重绘窗口。在进行绘制时,通过Qpainter类进行绘图,例如通过以原创 2020-11-05 18:52:37 · 1027 阅读 · 0 评论 -
QT之setStyleSheet设置Button样式
1.首先大致介绍一下setStyleSheet函数的作用:Qt中设置按钮或QWidget的外观是,可以使用QT Style Sheets来进行设置,非常方便。可以用setStyleSheet(“font: bold; font-size:20px; color: rgb(241, 70, 62); background-color: green”);来进行设置,其他的样式介绍如下:font: bold; 是否粗体显示border-image:""; 用来设定边框的背景图片。border-rad原创 2020-11-04 16:54:40 · 3660 阅读 · 0 评论 -
QT之鼠标事件的全局捕获
Qt的事件模型一个强大的功能是一个QObject对象能够监视发送其他QObject对象的事件,在事件到达之前对其进行处理。上示的图片黑色键盘是一个独立的Widget的子类CKeyboardForm,白色的背景部分是一个独立的主窗口。现在要实现在白色背景上任意点击某一位置即可实现虚拟键盘的收起,很显然这里就要通过CKeyboardForm来截取全局的鼠标(触摸屏)点击事件,并在代码的监视处实现以上的功能,这就是事件过滤的方法。实现一个事件的过滤包括两个步骤1.在目标对象上调用installEventFi原创 2020-11-03 17:51:00 · 4708 阅读 · 0 评论 -
QT之Button插入图片
给Button插入背景图片简单来讲就以下两个步骤。1.不管是windows还是linux下,将所需要的背景图片添加入资源文件里面,如图:然后记住相对工程而言的图片资源文件的路径。这里我的是":/image/res/CH-EN.png"。2.然后给Button添加背景图片的对应类操作不止一次,想QIcon,QPixmap等都可以,还可以通过.qss演示表,这里我使用的是比较简单的QIcon。代码如下:QIcon icon(":/image/res/CH-EN.png"); //创建icon对象,保存原创 2020-11-03 16:21:53 · 4393 阅读 · 2 评论 -
QT项目中添加资源文件
工程文件的后缀是pro,资源文件的后缀是qrc。下面往一个建好的工程中添加资源文件。假设我的工程目录在/home/home/linux/QT/project/snake目录下面,然后在该工程目录下面创建一个img文件夹用来存放我们的资源,比如文件,图片等。一、点击新建文件或工程选择添加QT资源文件,名称随便填写,我这里填写test,路径存放在工程路径下面。其他的填写默认即可。建立好资源后会默认进入资源管理界面点击添加->添加前缀 输入/png /* 这里是我们自己定义的路径前缀转载 2020-11-02 10:49:33 · 311 阅读 · 0 评论 -
QT 快捷键操作
Qt 中面对巨大的工程,需要许多快捷键,最重要的就是跳转函数定义,那就是: F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)如果F2 不能找到这个内容,那就command + shift + F 整个文件去寻找还有一些其他的操作F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 欢迎模式Ct转载 2020-10-30 15:33:27 · 436 阅读 · 0 评论 -
Qt: MinGW 与MSVC的区别
Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是两种不同的编译器。1、MSVC是指微软的VC编译器2、MinGW是指是Minimalist GNU on Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你 在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方运行时库。...转载 2020-10-30 09:57:20 · 1304 阅读 · 0 评论