Qt
鬼马行天
C++,图形学,UnrealEngine,Qt,GIS,AI
涉猎良多,学艺不精
展开
-
QML WebEngineView加载地图卡顿的原因
最近使用QML的WebEngineView加载地图的时候发现,地图操作非常卡顿,排查的时候发现,是因为主界面上的一个动画(Animation),把动画关掉以后,操作地图就非常流畅了。这块的资料有点少,并不知道为啥,应该是个不bug?权当是给有同样问题的同学提供一个思路吧。...原创 2019-10-12 11:02:27 · 1308 阅读 · 1 评论 -
关于UDP接收数据:使用boost asio库和使用Qt网络库的比较
使用boost asio库和使用Qt网络库进行UDP数据接收前面的话 之前在进行网络编程时使用的比较多的是Qt的网络库,大部分会使用UDP协议进行传输,刚开始时对性能的要求不高,1s内也就接收50次左右,所以使用时没有出现什么异常。最近做的项目要求达到1s内500次以上的接收频次,此时使用Qt的QUdpSocket进行接收时发现接收过程中会存在大量的丢包现象,刚开始时以为这是UDP传输的正常...原创 2018-11-02 11:56:33 · 3187 阅读 · 0 评论 -
Qt的QTimer在多线程下的操作
Qt的QTimer在多线程下的操作 之前使用Qt的QTimer类主要是用timeout信号来触发执行比较密集的操作,还不会像while(1)那样造成阻塞,所以一直用也没深究太多。最近使用时,却遇到了一个比较头疼的问题; 执行比较密集的操作我一般都是放到一个单独的线程里去跑的,将工作对象moveToThread转到单独的线程,启动工作对象中的计时器,之后就可以跑了,也没考虑到停止的问题。但这...原创 2018-11-02 12:17:14 · 7804 阅读 · 0 评论 -
Qt里控件自绘的那点事
前言 最近一直在做控件自绘方面的事情,自己设计了一些控件和界面,下面把过程当中的经验记录下来。 现在写界面的话,一种是用C++,一种是用QML,这两种都有用过,所以一并写出来。QWidget中的自绘 在QWidget中做自绘一般就是重写void paintEvent(QPaintEvent * event)函数,然后在这个函数里利用QPainter类进行绘制,在这里提供一段代码:v...原创 2018-11-14 11:10:21 · 5646 阅读 · 1 评论 -
QML中调用C++耗时操作造成阻塞的解决办法
在QML中经常会调用用C++写的比较耗时的操作时,一般会造成界面的卡死。刚开始的时候是想着是不是可以在QML中开辟新线程,一查还真有,WorkerScript。但这玩意儿有点坑的是你不能访问其他对象的属性、方法,官方原文是这样写的: Since the WorkerScript.onMessage() function is run in a separate thread, the Ja...原创 2018-11-14 12:26:29 · 2999 阅读 · 0 评论 -
基于QtWebEngine的程序编译发布程序注意点
我用的是Qt5.10.1的MSVC2015-64bit版本,程序使用了QtWebEngine库。将程序打包发布后发现打不开程序,看报错是因为QtWebEngine有问题,经过各种研究网上和官方资料后,终于解决,下面是操作:(1)将Qt5.10.1\5.10.1\msvc2015\bin中的Qt5WebChannel.dll、Qt5WebEngine.dll、Qt5WebEngineCore....原创 2018-11-16 15:51:58 · 3553 阅读 · 0 评论 -
Qt(5.10)连接MySQL(8.0.x)数据库驱动加载不成功
报错是这样的:QSqlDatabase: MYSQL driver not loadedQSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 这种情况说明程序是可以找到驱动的,但是驱动加载不成功,所以网上大家说的比较多的是驱动不匹配,可参见这篇文章https://blog.csdn...原创 2018-12-19 15:40:07 · 2020 阅读 · 3 评论 -
QML复杂界面下的按键消息处理——解决焦点丢失按键不响应问题
在界面结构比较复杂的情况下,经常会出现按键消息不响应的问题,这里给出一个我的解决方案,首先,我们确定好接收按键消息的对象,比如下面的rootRect。 rootRect接收到按键消息后将其转发给需要处理该按键消息的对象,该例中按键消息传递给了targetPage。Rectangle { id: rootRect color: "#00000000" ...原创 2019-06-13 16:14:18 · 3257 阅读 · 0 评论 -
C++和QML之间传输JSON字符串并解析(适用于传数组或其他复杂参数)
QJsonObject转为QString,发送带此QString的信号,QML中接收到信号后直接用JSON进行解析(QML支持Javascript,自然也支持相应的json解析)。同理,可以在QML中将javascript对象先转换成json字符串,然后传给C++进行解析。这种方法可以用来传输比较复杂的数组参数,之前都是用的QVariantList和QVariantMap,感觉好不方便,所以在...原创 2019-06-14 15:28:30 · 6026 阅读 · 1 评论 -
注册C++单例到QML中出现注册不成功的问题
int qmlRegisterSingletonType(const char *uri, int versionMajor, int versionMinor, const char *typeName, QObject ( ) ( QQmlEngine *, QJSEngine * ) callback)注意了,这里的typeName首字母要大写!!!!!!!!!!!!!!被坑了一下午。...原创 2018-09-27 14:51:14 · 703 阅读 · 0 评论 -
使用Qt编写线程安全的单例模式
使用Qt编写线程安全的单例模式代码参考http://wiki.qt.io/Qt_thread-safe_singleton刚接触这段代码时,觉得很多地方不懂,主要是自己对C++的多线程知识了解的还不够深入,研究了两天之后,记录一下,纵然还是不能完全掌握其中精髓,但还是学到了一些东西。//call_once.h#ifndef CALL_ONCE_H#define CALL_ONCE_H...原创 2018-09-21 10:52:15 · 3324 阅读 · 0 评论 -
QML与C++混合编程(二):QML获得C++类中的属性
QML获得C++类中的属性 QML可以轻松地用C++中定义的功能进行扩展。由于QML引擎和Qt元对象系统的紧密结合,QML可以获取任意QObject派生类中的功能,这使得QML可以通过一些小的改动直接获得C++中的数据和方法。 QML引擎可以通过元对象系统对QObject实例对象进行内省,这意味着QML可以获取一个QObject派生类中的属性、方法(为公有槽或者标记为Q_INVOKAB...翻译 2018-07-18 16:37:47 · 3342 阅读 · 5 评论 -
关于Qt的.pro文件的编写
刚开始学习Qt的时候,出现一些编译错误后,很多论坛上都教大家用一下qmake试试,当时觉得很不理解,但由于初学,也没有深究,只是觉得好神奇,因为很多时候确实是用一下qmake就好了,直到前段时间,因为一个项目,要用到很多的第三方库,接触到了.pro文件的编写,也对qmake有了一定的认识,关于qmake,官方这里讲的很详细了,大家可以参考学习一下。大多数时候在Qt里编写程序时是不需要自己去改....原创 2018-07-06 21:31:18 · 416 阅读 · 0 评论 -
QML与C++混合编程(三)在C++中定义QML类型
在C++中定义QML类型翻译 2018-07-19 15:42:33 · 1117 阅读 · 0 评论 -
QML中ChartView使用legend的问题(Qt 5.10.1版本)
在使用ChartView的时候,按照官方的文档,使用text editor进行编辑时,有如下代码:ChartView {legend.visible: false} 此时会报错:““legend does not have members(M17)””,但是运行时却没有受影响,只是此时Form Editor下由于这个报错已经无法正常显示我们的界面预览,所以很影响使用。 后面...原创 2018-07-30 16:42:46 · 2748 阅读 · 0 评论 -
Qt数据库编程基础
整理了一下在Qt下使用数据库的基础代码,有几个坑: (1)要将plugins目录包含进去,可以选择在.pro文件中加INCLUDEPATH语句,也可以在cpp文件里加addlibrary语句,总之要把类似于“.\5.10.1\msvc2015_64\plugins”这样的目录包含进去; (2)给连接命名后后续使用访问数据库的类时一定要绑定数据库,否则可能会出现“database not ope...原创 2018-08-01 10:26:40 · 1027 阅读 · 0 评论 -
QGraphicsView相关整理
QGraphicsView相关整理最近在项目中频繁地使用了QGraphicsView相关的类,所以在这里记录一下相关的开发心得:(1)继承QGraphicsView,改写下面的protected成员函数进行自定义操作:protected: void keyPressEvent(QKeyEvent *event); void mousePressEvent(QMous...原创 2018-08-29 13:54:11 · 5702 阅读 · 0 评论 -
QTableWidget相关
QTableWidget相关(1)设置每个单元格的背景颜色时需要注意如果单元格里没有内容的话,颜色设置是不成功的; (2)horizontalHeader()->setSectionResizeMode(INDEX, QHeaderView::Stretch);可以设置列自动根据内容伸缩,还有一种是QHeaderView::ResizeToContents,verticalHeader...原创 2018-08-29 16:08:18 · 1351 阅读 · 0 评论 -
在Qt中使用ODBC导入Excel数据及程序部署
在Qt中使用ODBC导入Excel数据及程序部署之前导入Excel的时候,用的是QAXObject相关,虽然也不难,导入速度也可以,但在客户的机器上部署时就非常麻烦,常常出现导入不成功的情况,后来试着使用ODBC,发现真的很方便,先上代码://获取配置文件地址#include <QtSql/QSqlDatabase>#include <QtSql/QSqlQuer...原创 2018-08-29 16:28:10 · 1361 阅读 · 0 评论 -
QML与C++混合编程(一)
该系列文章主要参考官方文档:英文文档概述 QML可以轻松地通过C++代码进行扩展,一方面,QML模块中的类允许C++对QML对象进行加载和操作,另一方面,由于原生QML引擎和Qt元对象系统的集成,QML可以直接调用C++的功能。这使得开发者可以同时使用QML、JavaScript和C++进行混合应用的开发。 QML和C++的集成有以下几个好处:将界面和后台逻辑分离,界面通...翻译 2018-07-17 17:23:12 · 970 阅读 · 0 评论