qt学习
蜗牛在听雨
这个作者很懒,什么都没留下…
展开
-
Qt 百分比进度条显示
进度条原创 2022-12-03 20:12:56 · 858 阅读 · 0 评论 -
Qt 计算代码 运行时间
方法一精度为us级#include<qelapsedtimer.h> QElapsedTimer mstimer; mstimer.start(); // ****此处添加需要计算运行时间的代码 float time = (double)mstimer.nsecsElapsed()/(double)1000000; qDebug() << time<<"ms";// 最终统计出来是ms方法二利用QTime,其精度为ms级#include转载 2021-07-16 16:07:15 · 2969 阅读 · 0 评论 -
Qt QTreeWidget控件造成程序不响应,内存泄露
有道词典导致Qt程序卡死的问题我已经发现了一段时间,之前以为是自己程序的问题,后面多方验证才发现这个问题是我更新到Qt5.12后产生的。下面是该bug的重现条件:1.打开有道词典,将屏幕取词开关打开 2.在自己的程序中添加一个QTreeView或者QTreeWidget,并且添加一些数据没错,这个bug主要是在QTreeView或QTreeWidget上引发,其他控件我还没有发现存在该问题。我这里就使用Qt的帮助文档软件来测试: 3.将鼠标放到上面的红色框选区域中停顿1秒左右软件卡死。打开转载 2021-05-14 09:10:18 · 3584 阅读 · 2 评论 -
Qt 创建停靠悬浮窗口 QDockWidget
1.Qt实现窗口停靠和悬浮使用类QDockWidget,它有两个重要方法用来设置停靠特性以及停靠区域1 dw1->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable);//设置停靠窗口特性,可移动,可关闭2 dw1->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置可停靠区域为主窗口左边和右边2.转载 2021-04-25 15:42:26 · 4404 阅读 · 1 评论 -
QT+VS 中使用qDebug()打印调试信息无法显示
1.首先右键点击项目名称,找到最后一项"属性"2. 然后设置为如图所示3. 会弹出CMD窗口,出现qDebug的调试信息原创 2021-04-17 17:22:28 · 3227 阅读 · 0 评论 -
Qt: TreeWidget 鼠标右键信号触发没反应customContextMenuRequested
加上下面对treewidget的设置TreeWidget->setContextMenuPolicy(Qt::CustomContextMenu);转载 2021-03-03 19:52:52 · 1133 阅读 · 2 评论 -
Qt :QWidget 实现QDialog exec() 模态显示效果
一、实现过程声明定义exec函数,用于后续调用这个widget的模态显示;使用 QEventLoop 实现事件循环;重写 closeEvent ,退出事件循环;二、头文件#include<qeventloop.h>#include<qevent.h>private: QEventLoop* m_Loop; public: void exec(); protected: void closeEvent(QCloseEvent* event);三、源原创 2021-02-27 19:44:55 · 3083 阅读 · 1 评论 -
Qt 文件选择对话框 获取当前工作目录及上一层目录
打开文件选择对话框时,需要设置默认的打开路径: QFileDialog* fd = new QFileDialog(this); fd->setWindowTitle(tr("选择工件模型...")); if (part_path.isEmpty()) { //当前程序运行目录 QDir cur_path(QCoreApplication::applicationDirPath()); //当前目录的上一层 cur_原创 2021-02-25 09:46:00 · 3794 阅读 · 0 评论 -
解决 QRibbon 在VS+Qt 环境下的编码报错问题 “文本后缀无效; 未找到文文本运算符或文本运算符模板“
一、问题在使用QRibbon时编译报错 “文本后缀无效; 未找到文文本运算符或文本运算符模板”,是因为编码问题,需要将程序文件进行编码设置二、解决方案1.Visual Studio 2019修改编码UTF-8VS 2019隐藏了高级保存功能,导致没办法直接去设置代码编码 UTF-8。那么我们直接把高级保存功能调用出来即可:单击“工具”|“自定义”命令,弹出“自定义”对话框。单击“命令”标签,进入“命令”选项卡。在“菜单栏”下拉列表中,选择“文件”选项。单击“添加命令”按钮,弹出“添加命令”原创 2021-02-24 14:00:11 · 3143 阅读 · 0 评论 -
error C1128:字节数超过对象文件格式main.cpp限制:请使用/bigobj进行编译
解决:打开属性页->C/C++ ->命令行->键入/bigobj 编译器原创 2020-12-07 14:29:28 · 422 阅读 · 0 评论 -
VS 2019 + QT 5.13.0 msvc2017_64 配置过程
QT下载链接:清华镜像 :qt/official_releases/qt/5.13/5.13.0/安装时只勾选 MSVC 2017 64-bit 和Tools 中的第一个选项 Qt creatorVS2019 就装社区版参考链接:Qt5.11.1安装与VS2017配置插件版本: qt-vsaddin-msvc2019-2.4.3.vsix...原创 2020-11-27 23:54:43 · 2907 阅读 · 0 评论 -
产生随机数
QTime time; //用于产生随机数 time = QTime::currentTime(); qsrand(time.msec() + time.second() * 1000); int n= qrand() % (10); //10以内的随机数原创 2020-11-26 21:59:02 · 128 阅读 · 1 评论 -
QVector 结构体排序
一、定义结构体struct MyStruct{ int index; //索引 float area; //面积};二、排序函数函数声明要采用 staticstatic bool sort_by_area(const MyStruct &house1, const MyStruct &house2);根据结构体中的面积进行升序排列, 如果要降序就将小于号<改为大于号>,函数实现:bool sort_by_area(const MySt原创 2020-11-17 16:07:11 · 1820 阅读 · 0 评论 -
VS2019 Qt debug:Struct报错 无法引用“****”的默认构造函数,它是已删除的函数
一、问题描述定义了如下的结构体struct Data_curve{ int curve_index; //TopoDS_Edge索引号 //几何曲线的类型(枚举变量) OCC_Geom_curve curve_type; //各种曲线(类的实例) Geom_BezierCurve bezier_curve; Geom_BSplineCurve bspline_curve; Geom_TrimmedCurve trimmed_curve; Geom_Circle c原创 2020-08-17 16:19:50 · 3096 阅读 · 0 评论 -
VS+Qt 编辑 ui界面,代码中未更新
在VS2019下使用Qt开发程序过程中遇到了一个问题:编辑ui界面后,代码中检测不到ui界面的改变,运行程序时还是之前的界面。解决方法:1.改变ui界面,保存;2.在VS中的“解决方案资源管理器”中选中ui文件->右键->编译;3.选中项目->右键->重新扫描解决方案。在代码中试一下“ui->控件名”,是否会识别出来,如果识别出来则成功,如果不行,则再次“扫描解决方案”。...转载 2020-06-12 13:15:15 · 2744 阅读 · 0 评论 -
vs2019 +Qt 槽函数执行两次
1.Qt翻译机制用官方的槽函数写法“ on_对象名称_信号类型 ”可以不用写connect函数,可以直接触发槽函数。例如:on_btn_pressed()on_photoGrid_triggered()2.Connect连接方法利用Connect函数连接对象和槽形如:connect(ui->btn,signal(pressed()),this,slot(on_btn_pres...原创 2019-07-17 17:21:51 · 1696 阅读 · 1 评论 -
vs2019 + qt5.13(MSVC2017)添加第三方库后的Link2019 2001报错
在给vs2019的qt工程中配置第三方库(Opencv、Kinect)后,在编译时产生了大量的Link 2019和Link 2001错误。多次尝试后发现是没有配置Qt的静态库。需要进行以下配置:1、首先,在【链接器】→【常规】→【附加库目录】添加$(QTDIR)\lib这个目录,即库的路径,查看下方路径是否正确2、在【链接器】→【输入】→【“附加依赖项】新增下面这些库release版...原创 2019-07-16 23:42:43 · 4152 阅读 · 3 评论 -
Qt之QTableWidget的使用及常用设置
各种软件设计中,表格的使用非常频繁,下面介绍的是关于QTableWidget的使用以及常用属性的设置。(1)创建一个新的表格控件[cpp] view plain copy print?QTableWidget *table=new QTableWidget(); QTableWidget *table=new QTableWidget();(2)设置列数[cpp] view plain co转载 2017-06-29 21:27:28 · 1971 阅读 · 0 评论 -
Qt之QTableWidget
获取单元内容使用Item()函数,而不是ItemAt()函数来获取,如下QString infoString;infoString = ui->tableWidget->item(0,0)->text();表示获取表中第一行,第一列的元素的内容(注意是从0开始)设置单元内容一开始想当然的调用了以下的函数,来设置单元item中的值:QStringList list = MSG.split("#");原创 2017-06-30 09:35:44 · 350 阅读 · 0 评论 -
Qt TCP之Server/Client/Socket信号、槽等总结
mySocket类自己封装的mySocket类,继承自QTcpSocket类。常用的socket类的信号disconnected() socket连接断开时触发readyRead() 当有数据来到时触发该槽函数常用的socket类的函数connectToHost(serverIP,serverPort) 向服务器发起连接 指定IP和端口Server类自原创 2017-07-01 11:37:33 · 5882 阅读 · 1 评论 -
Socket粘包问题
这两天看csdn有一些关于socket粘包,socket缓冲区设置的问题,发现自己不是很清楚,所以查资料了解记录一下: 一两个简单概念长连接与短连接:1.长连接 Client方与Server方先建立通讯连接,连接建立后不断开, 然后再进行报文发送和接收。2.短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此种方式常用于一点对多点 通转载 2017-07-01 12:58:17 · 290 阅读 · 0 评论 -
Qt TCP之自定义通信协议
在已经实现socket通信的前提下,设计了如下的通信格式:假设cmd定义如下:#ifndef CMD_H#define CMD_H//服务器------->客户端#define Connet_Success 0x0F00 //连接成功应答包#define Login_answer 0x0F01 //登陆结果(也是QString 的一种原创 2017-07-01 17:10:30 · 6415 阅读 · 5 评论 -
Qt TCP客户端无法连接服务器
自己封装了一个server类,继承自QTcpServer,在mainwindow中生成该类的实例化对象myTcpSerber并对6666端口进行监听 Server myTcpServer; if(!myTcpServer.listen(QHostAddress::Any,port_ID)) // 6666端口 { qDebug()<<myTcpServer.errorString();原创 2017-06-28 10:14:07 · 9704 阅读 · 0 评论 -
Qt调试 error:expected.........
在编译程序时遇到两个问题,第一个是expected initializer before * token:解决方法:查阅了网上的很多博客,都说是和头文件有关系,但是检查了头文件,应该是没有问题的,但还是尝试了一下更改包含头文件的方法,还是没用,最后把.h文件和.cpp文件都从工程中删除,然后重新添加,编译后不再报错(这个错误我也很无语),但是出现了新的问题。第二个报错expected class-n原创 2017-07-16 15:13:54 · 8173 阅读 · 0 评论 -
Qt 为.h和.cpp文件添加ui文件
假设在工程中已经有了一个纯类A的头文件a.h和源文件a.cpp,现在想给这个纯类文件添加UI,可以通过以下操作来实现:给工程添加一个和类同名的UI文件a.ui;在a.cpp中添加UI的头文件,头文件的名字应该形如ui_xxx.h,但在添加时会发现,索引不到a.ui对应的头文件ui_a.h;需要先编译一下,再去添加头文件时就可以成功索引到UI文件的头文件了;在构造函数的函数名后加上ui(new原创 2017-07-18 19:46:30 · 4145 阅读 · 0 评论 -
Qt:QLineEdit 无法输入
昨天在写界面类时遇到了QLineEdit无法输入的问题,为了确定是不是QLineEdit插件的问题,新建了一个工程来测试,发现可以正常输入,所以应该是我原先界面类中的LineEdit没有获取到键盘的输入事件。简单讲一下出现该问题的界面类:工程中有一个界面类的基类UIBase工程中所有的子界面都是通过继承UIBase来得到的,程序主要就是在这几个功能子界面间切换,之前为了防止当前子界面无法获取键盘原创 2017-07-19 10:06:52 · 8847 阅读 · 3 评论 -
Qt 子窗口上控件的槽函数不响应
遇到的问题:父窗口控件的槽函数正常响应,子窗口控件的槽函数无响应,想要实现的界面如下: 其中子窗口是嵌在父窗口的widget中的。点击pushButton1时,该按钮的槽函数正常响应;点击pushbutton2,按钮的槽函数没有正常响应。解决方法:原来子界面中按钮的槽函数是在Qt designer中通过右击转到clicked()的方式来实现的,需要改成用connect手动绑定信号和槽函数,形如:原创 2017-07-22 18:24:37 · 7151 阅读 · 0 评论 -
Qt 模拟鼠标点击
QPoint pos(0,0);QMouseEvent event0(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt::NoModifier);QApplication::sendEvent(ui->pushbutton, &event0);QMouseEvent event1(QEvent::MouseButt原创 2017-07-22 19:37:30 · 7136 阅读 · 0 评论 -
Qt 解决界面切换时的闪烁问题
在项目中遇到的问题,在一个启动界面下有几个子界面需要来回切换,但在子界面切换的间隙,总会有闪烁的现象出现,将显示在最后的启动界面显示出来。 原本的思路是将新界面先show出来,再将旧界面hide掉,这样的话启动界面就不会显示出来了,但实际运行时确不是这样,最后的解决方法是在新界面的show和旧界面的hide之间添加一个延时操作,这样就不会出现闪烁的现象了,延时操作的代码如下:QTime dieTi原创 2017-08-08 21:22:57 · 12207 阅读 · 2 评论 -
Qt Creator(mingw)下编译和配置OpenCV
版本说明Qt Creator: 4.0.3 Based onQt 5.6.1 下载资源名称qt-opensource-windows-x86-mingw492-5.6.3.exeOpenCV版本3.2.0 之前尝试新版本的3.3.1,但在编译过程中出现了没能解决的问题CMake版本3.4.3在编译和配置前,现将上述资源下载并安装。编译过程OpenCV下载解压后得到如下的文件。其中build原创 2017-11-30 22:00:06 · 2154 阅读 · 0 评论 -
Qt ui不更新问题
在Qt Creator左侧的项目中找到编译输出目录,如图所示根据得到的目录打开相应的文件夹,从文件夹中找到需要更新的UI编译文件,形如ui_uixxxxx.h.复制该文件到源码所在目录,覆盖同名的.h文件运行程序,检查是否更新...原创 2019-01-19 00:13:42 · 3023 阅读 · 0 评论 -
qt 发布的程序开机自启动出现读取文件失败 但 双击正常运行
问题描述:注册表写入 ,设置软件开机自启动开机自启动读取文件失败 但 手动双击执行正常原因:exe是靠相对路径寻找文件的,双击时,exe与读取的文件在同一个工作目录,所以正确执行。自动运行时,exe的工作目录是c:\windows\system32,与读取的文件不在同一个工作目录中,所以文件找不到。解决自启动读取文件失败的方法:1.使用绝对路径2.将要读取的数据文件放到正确的目录下...原创 2019-03-04 22:00:38 · 1405 阅读 · 1 评论 -
QTabWdiget的使用
改变Tab标签的方法 右击,选择“改变样式表”输入 QTabBar::tab{width:宽度}还有一种方法是,改变字体大小,把Tab撑大,依然是在“更改样式表”中,添加字体,调整字体大小增加新的Tab页 右击,插入页即可。原创 2017-06-28 16:28:40 · 2671 阅读 · 0 评论