
qt
文章平均质量分 50
youyudexiaowangzi
读书苦,读书累,晓来谁染霜林醉,名落孙山泪
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
记录一个没解决的createDIBSection失败的bug
写qt程序的时候遇到过一个crash,windbgpreview中截获的错误是createDIBSection failed,错误码是ERROR_NOT_ENOUGH_MEMORY,但是任务管理器中显示的内存占用还不到60%,从qt论坛中发现一个提示可能是GDI+对象的数量超标了,windows官方说明如下https://docs.microsoft.com/zh-cn/windows/win32/sysinfo/gdi-objects于是通过官方的api获取了一下GDI Object对象个数.原创 2021-12-17 18:46:37 · 2881 阅读 · 4 评论 -
QWidget调用show的时候闪退
实现了一个QWidget的子类名为mainWindow,class mainWindow : public QWidget{ Q_OBJECTpublic: explicit mainWindow (); ~mainWindow () override;protected: virtual void resizeEvent(QResizeEvent *event) override;}刚开始接触qt的时候会犯如下错误void showMainWind原创 2021-07-27 20:09:20 · 3802 阅读 · 0 评论 -
QSCrollArea用法
1.定义 QScrollArea* m_pScrollUserList = nullptr;//滚动控件,区域为可见区域,内容可滚动查看 QWidget* m_pScrollWidget = nullptr; //滚动控件的内容,可以动态调整大小 QVBoxLayout* m_pUserListLayout = nullptr;//滚动控件内容的layout,子控件添加到这个layout里面,动态调整滚动内容的高度2.实现 m_pScrollUserList = ...原创 2020-12-03 15:31:30 · 641 阅读 · 0 评论 -
记录一个QLineEdit不能输入中文的问题
场景,弹出QWidget,QWidget中有一个QLineEdit,QLineEdit不能输入中文不知道改了什么之后又能输入中午了,找了半天,发现跟Qt::Dialog和Qt::Popup的设置有关如果是Popup,修改不了输入法,也就写不了中文如果是Dialog,可以修改输入发,输入中文,不知道什么鬼问题,先记录一下...原创 2020-11-21 19:37:06 · 2831 阅读 · 3 评论 -
记录一个qml的bug:部分文字、图片变成黑块
今天遇到一个奇葩的问题,部分文字、图片变成了黑块,显示不出来,刷新也显示不出来,但不是全部,如果文字设置了颜色,那就是对应颜色的方块。花了一整天的时间整理UI和代码,发现是qml里面的TextInput(以及其子类如TextField) 和 QtAV播放器配合发生的,具体原因不知道,在此记录一下问题:窗口A,包含一个QQuickWidget,QQuickWidget加载一个qml,这个qml中有一个TextField,输入数据后,跳转到窗口B窗口B,保研一个QQuickWidget,QQuick原创 2020-11-21 16:40:06 · 788 阅读 · 3 评论 -
QQuickWidget在部分机型中显示不出来
主窗口是QWidget,内部通过QQuickWidget加载qml一直用的好好的,但是今天在客户那里发现了一个问题,qml界面没有加载出来,因为主窗口设置了无边框,允许透明,所以桌面上什么都看不到windows任务栏上可以看到程序图标,表明已经成功启动,只是界面没加载出来.h QQuickWidget *m_contentView = nullptr;cpp m_contentView = new QQuickWidget(); m_contentVi原创 2020-11-08 15:42:47 · 1724 阅读 · 0 评论 -
按下空格键,qt程序就结束了
今天遇到一个问题,当我的qt界面程序运行起来之后,不小心按到了键盘上的空格键,结果整个界面就退出了,还以为是闪退,结果从日志看就是正常的退出。于是监听了close事件,发现的确触发了close事件,于是查找所有触发close的事件,发现是自己重写的titlebar上有一个关闭按钮(QPushButton),也就是说按下空格键触发的不是关闭事件,而是按钮的点击事件再查看QPushButton的文档https://doc.qt.io/qt-5/qpushbutton.html#details原来原创 2020-10-29 11:00:03 · 1493 阅读 · 0 评论 -
QWidget子类窗口设置styleSheet无效
窗口A有子窗口B、CB是QWidget的子类A调用了setStyleSheet后,B的setStyleSheet无效,但是C的setStyleSheet生效了解决方案: setAttribute(Qt::WA_StyledBackground); setStyleSheet("QWidget{background-color:#6A33AA}");目的是脱离父窗口的样式...原创 2020-10-17 18:45:21 · 1064 阅读 · 0 评论 -
qquickwidget中的item截图
quickview中的item可以直接grabtoimage,但是qquickwidget中的item执行grabtoimage时会提示item not visible //m_contentView就是qquickwidget //找到一个objectName为testObject的item QQuickItem* pItem = m_contentView->rootObject()->findChild<QQuickItem*>("testObje原创 2020-08-28 16:23:49 · 497 阅读 · 1 评论 -
qml TextField获取到焦点但是没显示光标,输入文字后才有光标
今天遇到一个很奇怪的bug,TextField获取到焦点了,但是没有光标,要输入内容后才有光标,内容删除完之后光标也没了,但是其他部分TextField又可以获得光标,对比属性无差别,直接把正常的TextField复制过去,也失效了,于是想着是元素层级的原因,把TextFeld一层一层往父元素的父元素移动,定位一个有问题的层级,把该层级的属性和原来有问题的层级的属性进行对比,发现是x的赋值方式不一样正常的赋值方式是x:10异常的是x:normalPaddingnormalPadding是默认原创 2020-08-27 17:42:14 · 2070 阅读 · 0 评论 -
qt 5.13.1 + msvc 2017自动化编译
今天接到一个任务,自动化编译qt项目,然后打包1.自动化编译qt 项目自动编译qt以前觉得挺简单的"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86 qmake myproject.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug"jom qmake_alljom.exe -f Makefile.Debug这是编译deb原创 2020-08-20 15:50:16 · 1694 阅读 · 0 评论 -
QT圆角窗口
以前写的qt圆角都是在paintEvent中绘制圆角背景,但是如果圆角附近需要放控件,控件就会因为自己的重绘而跑到圆角的外面去了,还有一种办法就是设置setMask,自己控制哪里需要显示,哪里不需要显示,bmp填充为一个黑色圆角矩形,就能让窗口的可见区域局限于圆角矩形内,即使控件越界也不会显示出来。但是会有锯齿 QBitmap bmp(this->size()); bmp.fill(); QPainter p(&bmp); //p.setRend原创 2020-08-08 19:03:36 · 423 阅读 · 0 评论 -
qt窗口去除标题栏保留阴影
qt接口setWindowFlags(Qt::CustomizeWindowHint);可以单独去掉标题栏,保留边框阴影,但是顶部会多出6个像素的白边,十分难看,又不想窗口无边框的窗口自己实现阴影和拖拽事件,于是google了一下参考https://stackoverflow.com/questions/39731497/create-window-without-titlebar-with-resizable-border-and-without-bogus-6px-whitpro文原创 2020-08-02 15:30:22 · 2329 阅读 · 0 评论 -
qt项目winsock2中类型被winsock重定义了
windows项目中winsock.h、winsock2.h、windows.h的重复包含问题由来已久,今天在qt项目上遇到了有点闹心,场景:项目新添加了一个第三方的库,应用而不调用的时候编译没问题,一旦包含头文件并且调用其中接口,就报错,各种类型重复定义以前项目在vs里面,代码全部自己写的,大部分是因为winsock2.h和windows.h包含顺序引起的,可是今天用到全是qt和第三方的库,根本没有自己主动包含这些库的地方,于是从main.cpp里开始,把头文件的引用放到第一行,没事了。放到一堆i原创 2020-07-29 11:18:58 · 1014 阅读 · 1 评论 -
解决一个qt绘图卡顿的问题
qt绘图笔mfc方便太多了,具体接口就不讨论了,今天记录一个绘图性能差的问题环境:windows 10 16G内存 4核i5 cpu按理来说性能十分不错了,但是如果一条线画太长的话,后面的线条越来越慢,甚至影响到了主线程的UI展示经过层层排查,发现性能损耗在drawPath上,drawPath之前的moveTo、lineTo也略微耗时,但是鼠标点累积到500个之前还是很快的,往后耗时就慢慢变大了,最夸张的时候drawPath耗时超过50毫秒,而update里面drawPixmap耗时不到1毫秒,原创 2020-07-04 17:36:51 · 6451 阅读 · 0 评论 -
qml在部分windows7上文字显示模糊的问题
qml在本机运行时显示正常,但是文字部分windows 7上显示模糊,功能和图片没什么问题,所以猜测是渲染文字的原因解决方法Text { renderType: Text.NativeRendering; }参考https://stackoverflow.com/questions/29733711/blurred-qt-quick-text...原创 2020-07-04 16:09:05 · 522 阅读 · 0 评论 -
记录一个qt 窗口没有卡死,但是却拖动不了的bug
今天测试遇到一个奇怪的现象,窗口弹窗后,弹窗和父窗口都不能拖动了,但是窗口里面的UI还在继续,也没有死掉,几经排查,发现是以前的弹窗阻塞了父窗口和新弹出来的窗口。窗口:窗口A、窗口B是两个没有父子关系的窗口,子窗口d1和子窗口d2是窗口A的两个子窗口,其中d1调用了setWindowModality(Qt::WindowModal);会阻塞窗口A和窗口A的子窗口。操作:窗口B中的按钮触发了窗口A弹出子窗口d1的操作,然后不小心点了窗口B的另一个按钮触发了弹出子窗口d2的操.原创 2020-06-30 20:16:40 · 1020 阅读 · 0 评论 -
QWidget move后QQuickView的size改变了, resize后QQuickWidget拉伸了
QQuickView添加到QWidget中m_pContentView = new QQuickView();.......this->createWindowContainer(m_pContentView, this);QWidget调用move后发现qml只显示了左上角很小的一片区域于是在move之前,之后获取了一下m_pContentView的sizemLastPos = this->pos();qDebug()<<"contentview size原创 2020-05-27 16:07:32 · 439 阅读 · 0 评论 -
记录一下QHBoxLayout布局
以前些QBoxLayout的时候,只知道往里面addWidget,QBoxLayout会修改添加进去的widget的size,1.单独添加控件 setFixedHeight(30); m_pLableText1 = new QLabel(this); m_pLableText2 = new QLabel(this); m_pButton1 = new QPushButton(this); m_pButton2 = new QPushButton(this原创 2020-05-27 15:50:58 · 1169 阅读 · 0 评论 -
qt加载jpg,保存jpg失败
今天无意中发现一张图片在qt程序中出现问题,QPixmap加载jpg图片后执行save操作,返回失败了,失败原因不知道,往前追踪,发现new QPixmap(imagePath)后判断isNull()直接返回true,也就是加载的时候就已经失败了,但是从windows的资源管理中查看分明就是一张正常的图片。图片查看器也能正常打开它。偶然灵光一闪,将他的后缀改为了.png,突然就没问题了。想必QT依赖后缀名动态使用qjpeg.dll等动态库解析图片。于是写了一段兼容处理的代码QPixmap* getRe原创 2020-05-11 14:34:39 · 2542 阅读 · 0 评论 -
Qt安装后,继续添加或移除组件
在qt的安装目录根目录D:\Qt\Qt5.13.1,有一个exe程序MaintenanceTool.exe,双击即可。但是我是下载安装包,离线安装的qt,选择add or remove components的时候提示至少需要一个有效且已启用的储存库 问题参考http://www.programmersought.com/article/6878252034/前往http://dow...原创 2020-04-29 21:46:44 · 2592 阅读 · 1 评论 -
QT 采集摄像头数据
QCamera本身是不负责显示显示图片的,需要通过setViewfinder设置接收视频帧的对象,setViewfinder支持三种格式,为了尽可能的拿到真是数据,我采用了继承QAbstractVideoSurface的方式CBaseCameraSurface.h#ifndef CBASECAMERA_H#define CBASECAMERA_H#include <QObj...原创 2020-04-21 21:38:49 · 1541 阅读 · 2 评论 -
设置QtAV播放结束后不黑屏
QtAV播放结束后,播放器默认会黑屏,为了美观和项目需求,要设置播放结束后停留在最后一帧,QtAV本来是有对应的接口的参考https://github.com/wang-bin/QtAV/issues/566但Qml中不能直接调用player->setMediaEndAction(MediaEndAction_Pause)于是就想着修改QtAV的代码1.添加Qml中可以调用的...原创 2020-04-08 21:28:39 · 709 阅读 · 0 评论 -
QtAV编译使用
编译:1.下载源码http://www.qtav.org/我下载的版本是2017-06-21:1.12.0 Released - CMake Support2.下载QtAV的依赖:ffmpeg and OpenALhttps://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86%...原创 2020-03-26 12:28:52 · 889 阅读 · 0 评论 -
qt 5.13 + msvc 2017在windows10上打包,运行在windows7上报找不到api-ms-win-core-xxxxxx.dll动态库的bug
本人开发环境:qt 5.13.1 + msvc2017系统:windows 10windeployqt打包后在其他windows10上运行会报错找不到msvcp140.dll、vcruntime140d.dll、ucrtbased.dll、concrt140d.dll,这些可以从本机系统中找到,放进去就可以在其他windows10中运行了,但是如果直接放到其他windows7上运行...原创 2020-03-03 10:16:09 · 2506 阅读 · 0 评论 -
QT线程中发起网络请求,槽函数没有反应
今天要在线程中处理文件上传,继承QThread后在run里面执行上传操作,发现线程中的网络请求根本没有响应,根据log判断,post请求已经发起,但是后台和抓包都看不到请求。经过一番查询,发现QThread的run函数本来只是执行exec()函数,而继承了run之后,没有调用exec(),于是加上了exec(),发现网络请求终于成功了https://doc.qt.io/qt-5/qthre...原创 2020-02-22 10:14:52 · 949 阅读 · 0 评论 -
qt集成ziplib压缩文件和目录
今天本来想完成压缩文件的任务,结果并没有想象中那么轻松,1.qt自带有压缩工具,但是不考虑,因为qCompress主要用来压缩字节流,就算自己封装成压缩文件,也只能用qt的接口进行解压,可项目需要的是一个通用的压缩工具,2.zlib+quazipzlib官网:http://www.zlib.net/quazip参考http://quazip.sourceforge.net/cla...原创 2020-02-09 18:23:22 · 1147 阅读 · 0 评论 -
记录一个qt关闭窗口后crash的bug
今天调试一个程序的时候发现,关闭窗口就意外crash,debug模式打开,关闭后有一行输出HEAP[********.exe]: Heap block at 1D014FC8 modified at 1D015040 past requested size of 7这就奇怪了,程序窗口都关闭了,怎么还crash,而且还是堆栈错误,经过代码一行一行的注释,发现跟QQuickView...原创 2020-02-06 21:38:07 · 1717 阅读 · 0 评论 -
qt打包后,其他机器上运行报错
以前写的简单程序,用windeployqt打包就能把QT相关依赖项找到了,但是随着项目的推进,依赖了越来越多其他库,甚至还有vc的库,根据程序运行失败的各种符号链接的提示,从本地windows\system32目录下找到了msvcp140d.dllucrtbased.dllvcruntime140d.dllconcrt140d.dll然后问题又来了,双击后程序应用程序无法...原创 2020-02-06 19:44:10 · 850 阅读 · 0 评论 -
opencv+qt编译release版本报错,提示cv::cvtColor、cv::bilateralFilter等符号找不到
前些天的qt程序一直用debug版本调试,今天换到release后,发现编译不通过了,提示的各种符号找不到,可是就算用的opencv的debug版本的库,release版本程序也应该能找到二进制里面的符号才对,难道是头文件里面对对debug版本做了特殊处理,于是从opencv的头文件中搜索_DEBUG关键字,搜到的第一个文件就是opencv2\core\cvdef.h,而里面正好有namespac...原创 2020-02-06 19:28:17 · 1550 阅读 · 0 评论 -
关于QWidget子类的mouseMove事件
今天发现鼠标移动的时候,并不会产生鼠标移动事件,但是鼠标按下后就会触发了,看了qt的文档文档中也是这么说,https://doc.qt.io/qt-5/qwidget.html#mouseMoveEvent如果想要实时监听鼠标移动事件,需要调用setMouseTracking(true);======================如果mouseMove中移动窗口,...原创 2020-01-30 11:51:23 · 1940 阅读 · 1 评论 -
记录Qt窗口关闭时不小心导致的bug
QWidget及其子类显示一般两个步骤:构造,显示QWidget w;w.show()或者QWidget *p = new QWidget();p->show();如果在函数中显示窗口,使用第一个步骤,窗口闪一下就没了,函数代码块结束的时候,窗口这个临时变量的生命周期也就结束了,自动释放了如果在函数中显示窗口,使用第二个步骤,关闭窗口之后要么监听close事件,释...原创 2020-01-24 14:28:37 · 359 阅读 · 0 评论 -
记录两个Qt调用show()函数,窗口却不显示的bug
1.重写了show()函数,本来不是继承QWidget的类里面有一个show()方法,用来做其他事情,继承了QWidget,然后执行show()的时候窗口死活不出来2.重写了setVisible(bool)另一个类,本来也没继承QWidget,添加了一个信号setVisible;结果调用show还是出不来,调用isVisible()返回的是false,绝望了一点代码一点代码删...原创 2020-01-16 19:14:07 · 4656 阅读 · 1 评论 -
QT弹出对话框永远在父窗口上面,但是不影响父窗口交互
模态对话框会阻塞父窗口的交互置顶对话框不影响父窗口的交互,但是也会显示在其他窗口上面,导致同一个程序,多个窗口发生分层的效果要想永远在父窗口上面且不影响父窗口的交互,可以使用Qt::Tool属性QWidget*p = new QWidget(this);p->setWindowFlags(p->windowFlags() | Qt::Tool);p->resiz...原创 2020-01-13 19:36:25 · 6332 阅读 · 3 评论 -
Qt 5.12 qml使用TextInput输入中文有问题
qml熟悉了个大概,打算输入文字和后台交互的时候发现默认的英文输入法切换不了中文输入法了,因为我把win10系统的输入法设置为默认英文,其他程序输入框中按shift即可切换输入法,但是我写的qt程序就不行,对比了一下其他可以输入中文的qt程序,发现是qml文件引用方式的问题我写的qml文件是用QQuickWidget设置source引用的mainWindow::mainWindow(QW...原创 2019-12-18 10:23:46 · 2062 阅读 · 9 评论 -
QTCreator失去响应
今天使用QT本来好好的,系统也是新装的,然后多装了几个软件后QTCreator一打开过一会儿就卡死,失去响应,然后想把软件一个个卸载掉,刚好卸载完有道词典就好了,然后百度发现有道词典的取词跟qt有冲突,于是把有道词典的取词、划词都去掉了,qt也就正常了稍作记录,方便查阅...原创 2019-12-07 16:48:11 · 175 阅读 · 0 评论 -
Qt自定义qDebug输出
qDebug默认输出字符串+换行想要输出文件名,函数名,行号需要自定义,如下是输出到文件,并且打印到控制台//自定义消息处理函数void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg){ QDateTime time = QDate...原创 2019-12-06 14:13:43 · 1230 阅读 · 1 评论 -
Qt网络请求携带cookie
原理:发起请求时携带cookie,请求返回时更新服务器返回的cookie,然后存在本地,以供下次启动时获取存储格式:本demo使用的是key=value;key2=value2的文本格式存储,只是为了方便qml中的ajax请求携带数据,格式可以自定义sqlite也是被封装了一层,就是单例模式的sql语句执行而已从sqlite数据库中根据hostname读取cookieQLi...原创 2019-12-06 11:10:41 · 2182 阅读 · 0 评论 -
QT入门
离线下载安装http://download.qt.io/archive/qt/设计器从设计工具栏中拖动控件到窗口上,objectName就是对应的控件,调用方式ui->pushButton->setText("i am a button"); 中英文cpp文件中加入execution_character_set("utf-8")cpp文件另存为utf-8 b...原创 2018-11-27 21:45:00 · 646 阅读 · 0 评论 -
QT qml入门
效果图:简单讲解:创建一个Qt Quick Application - Empty项目,编译器如下,我一般只选择msvc2017 32bit然后就可以直接运行了,但是一个main跑qml文件,控制起来可能有些麻烦,有些需要C++操作的具体控制可能不好写,于是我将其改成了C++与qml混合编码的样子先添加一个窗口,用来加载qml文件,qml用来布局样式(刚创建出来的ma...原创 2019-09-20 12:13:17 · 606 阅读 · 0 评论