Qt
Qt相关知识学习记录
hanhanluma
一个偏向于前端开发的程序员,包括但不限于Qt、react等,即PC软件和web前端开发。
展开
-
qt 配置 Android 时 All essential packages installed for all 。。。一行打叉
开始网上查了一圈,最后在Android studio中sdkmanger 安装NDK(Obsolete)后,Qt会提示安装后续的一些东西。Qt 5.12.4Qt Creator 4.12.2原创 2020-07-21 17:08:31 · 2531 阅读 · 2 评论 -
Qt 不同位数的编译器,指针的长度是不一样的
我是在windows下用MSVC2017 32bit的编译器编译程序,当我切换到linux下用gcc 64位的编译的时候。报错如下:大体是类型转换时丢失精度。解决办法return QVariant((qulonglong)(listNode[index.row()].treeNode)); unsigned long long来进行转换,之后可以加宏来识别是什么操作系统。...原创 2020-06-01 16:20:43 · 464 阅读 · 0 评论 -
Qt的图表显示一些方法总结记录
最近在项目交接,使用Qt来显示一些数据,比如折线图,加工数据数据图等。项目中使用的是QChart与QCustomPlot结合,具体使用方法有其他博客写的很详细。项目的界面是这样的:不过还有一种方法是ECharts+QWebEngineView,QWebEngineView之前用来加载html格式的说明书,可以很好的和Qt进行通讯,传递一些值,所以也是一种方法,可以根据对其熟悉程度进行选择。参考https://blog.csdn.net/liuyez123/article/details.原创 2020-06-01 10:19:39 · 1361 阅读 · 0 评论 -
Qt多线程同步的总结
在项目中,我是单独对一组数据进行存储(量大的针点数据),方便程序随时调用,生命周期是程序开始到结束,我是用数组进行存储的QVector ,在多线程的情况下,会有生成图片数据的线程还有修改针点数据的线程,为确保数据使用时的一致性,需要线程同步。了解到的方法有1、QMutex(互斥锁)或者QMutex联手QMutexLocker (遍历类)2、QReadWriteLock(读写锁)或者QReadWriteLock联手QReadLocker和QWriteLocker3、QSemaphore(信号量)原创 2020-05-28 16:41:08 · 510 阅读 · 0 评论 -
Qt 串口通信的简单demo
首先连接设备,我用得是接着编写Qt程序,要加入serialport 模块。主要cpp代码:#include "widget.h"#include "ui_widget.h"#include <QMessageBox>#include <QDebug>Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this.原创 2020-05-22 16:34:47 · 1021 阅读 · 0 评论 -
Qt qss 按钮点击效果设置
QPushButton{ font-size:16px; background-color:rgb(221, 214, 34); border:3px outset rgb(125, 125, 125);}QPushButton:pressed{background-color:rgb(125, 125, 125); border:3px outset rgb(125, 125, 125);}原创 2020-05-22 16:04:01 · 3139 阅读 · 0 评论 -
Qt中的connect不能将函数模板作为参数进行信号连接
验证一下:public slots: template <class Type> void slots_test(Type type) { qDebug() << "void slots_test:" << type; }signals: void signals_test(int type);//connect函数connect(this,&Widget::signals_test,thi原创 2020-05-22 11:53:29 · 920 阅读 · 0 评论 -
自定义控件之水波纹进度条
直接上图,如图所示,在写Qt自带的控件满足不了我们程序的需求时,我们可以自绘空间,利用QPainter的灵活性,绘制各种效果的控件,下面就展示最近的学习成果,水波纹进度条主要难点在于三角函数公式,可以温习一下以前的数学知识。下面贴上关键代码waterprogressbar1.cpp#include "waterprogressbar1.h"#include "ui_waterprogressbar1.h"#include<QPainter>#include<Q原创 2020-05-14 09:33:47 · 551 阅读 · 0 评论 -
记录·屏幕获取鼠标下的颜色值小程序
先上图:平常虽然也可以用截图软件Snipaste来获取颜色值,但这软件是用Qt来写的就想着自己也来写个简单的颜色获取。直接上代码#include "widget.h"#include "ui_widget.h"//#include <windows.h>//#include <iostream>#include<QApplication>#include<QDesktopWidget>#include<QPixma原创 2020-05-10 18:56:50 · 297 阅读 · 0 评论 -
一个Qt调用百度翻译API进行文本翻译的程序记录,辅助ts文件进行翻译。
项目要求有多国语言翻译,但是手动的去复制粘贴翻译显然不是合理的,组里有人写过类似工具,但是我这里没有源码,又想根据我的需求定制一些功能,所以借鉴现有的界面,如下图下面先搞定核心功能:百度翻译api的调用和对返回的数据进行处理。根据百度通用翻译API接入文档得知,通用翻译API通过HTTP接口对外提供多语种互译服务。您只需要通过调用通用翻译API,传入待翻译的内容,并指定要翻译的源语言(...原创 2020-05-07 16:07:19 · 2526 阅读 · 0 评论 -
在看Qt君的公众号时,发现了QSignalSpy的用法,记录一下
Qt君的文章思考:QSignalSpy类可以用在我正在做的项目,比如我想知道用户在重复点击一个按钮时,按钮处理信号被触发的次数(前提是我有触发的的条件限制),这样可以验证我的限制判断条件是否准确。 也可以用作在达到信号触发的峰值时,进行相应的处理,比如接收的信息超多10条就清理缓存等类似的操作。...转载 2020-05-07 09:11:26 · 1527 阅读 · 0 评论 -
关于QWebEngineView的鼠标事件的处理
https://stackoverflow.com/questions/30566101/how-can-i-get-paint-events-with-qtwebenginehttps://blog.csdn.net/weinkym/article/details/78501078?depth_1-utm_source=distribute.pc_relevant.none-task-...原创 2020-04-23 16:31:35 · 3277 阅读 · 0 评论 -
Qt 一个信号连接多个槽函数后的执行顺序
当我们想一个信号触发多个槽函数的时候,又对执行顺序有要求,要么要知道这些槽函数的执行顺序,Qt5后,在信号发射后,槽函数会按照链接顺序执行,下面写个简单的例子来验证一下。环境win10,Qt 5.13.0QPushButton *btn1 = new QPushButton("btn1");connect(btn1,&QPushButton::clicked,[=](){...原创 2020-04-23 09:28:10 · 3787 阅读 · 0 评论 -
解决 "ERROR: Unknown module(s) in QT: webengine" 办法
环境:window 10, Qt 5.13.0问题描述:需要使用到WebEngineView组件用来显示,在工程.pro中增加webengine后,Qt Creator应用程序输出中打印了Project ERROR: Unknown module(s) in QT: webengine解决办法:以为是自己没有安装相应的模块,于是在虚拟机里重新安装测试,发现如下信息:...原创 2020-04-20 16:33:20 · 3516 阅读 · 0 评论 -
利用利用 Q_INVOKABLE 和 QMetaObject::newInstance来生成对象的新实例
使用Q_INVOKABLE来修饰成员函数,目的在于被修饰的成员函数能够被元对象系统所唤起。 除了为对象间的通信提供信号和槽(signals and slots)机制之外,元对象的代码还提供下列特性:QObject::metaObject()返回与该类绑定的meta-object对象。 ·QMetaObject::className()可以在运行时以字符串的形式返回类的名字,不需要C++编译器...原创 2020-04-17 16:12:13 · 1708 阅读 · 0 评论 -
Qt的单例模式
Qt有自带的宏可以使用单例模式,Q_GLOBAL_STATIC通过这个宏不但定义简单,还可以获得线程安全性。test01.h#ifndef TEST001_H#define TEST001_H#include <QObject>class Test001 : public QObject{ Q_OBJECTpublic: static Test0...原创 2020-04-17 14:17:54 · 427 阅读 · 0 评论 -
Qt切换多国语言,简单的流程记录。
Qt项目涉及语言切换,语言翻译,QTranslator是最常见的做法,在程序加载之前就需要加载好qm翻译文件,这样被tr( )包裹的字符串就会设置为翻译的内容。 具体在程序pro文件里加上以下宏,在更新翻译的时候会生成ts文件方便用qt语言家工具进行翻译。TRANSLATIONS = ts/XX.ts\ #中文简体 ts/XX.ts\ #英文 ...原创 2020-04-17 09:15:49 · 740 阅读 · 0 评论 -
QT MSVC编译中文乱码问题
平常都用MinGw编译,但项目需要用到一个MSVC编译个一个库,为了避免出现莫名其妙的问题,现改成MSVC编译,之后出现中文乱码的问题。在出现中文字符串的文件头中加入如下语句: #if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif 也可以使用QStringLiteral()宏对每个中文字符...原创 2020-04-15 09:37:57 · 295 阅读 · 0 评论 -
记录·Qt使用C++模版函数来设置不同类的相同属性
开发中遇到,两个不同类到时都有name,fontSize等属性,就可以利用模板函数来简化代码。template <class Type>void setTypeFontSize(Type type, int currentIndex){ if (type->metaObject()->className() == QStringLiteral("Custo...原创 2020-04-09 11:50:26 · 268 阅读 · 0 评论 -
QT中提示error: xxx does not name a type xxx信息时
检查提示错误的文件和定义这个变量的地方是否有头文件相互包含的情况!简单说编译器在编译时就是两个头文件相互包含,会出现递归包含。原创 2020-04-02 10:13:20 · 3256 阅读 · 0 评论 -
Qt Q_PROPERTY属性系统和常规get/set方法的区别
在使用Q_PROPERTY进行类的属性设置后,发现使用最高的还是其中的机械式的get/set方法,那么为什么一定要设置Q_PROPERTY呢,只需要定义get/set方法就好了不是,十五的存在必然有它的价值。Q_PROPERTY()是一个宏,用来在一个类中声明一个属性property,它的好处还是有很多的,它可以使得程序变得更加灵活。Q_PROPERTY(type name R...原创 2020-04-01 10:09:23 · 789 阅读 · 0 评论 -
关于QAbstractListModel+QStyledItem+DelegateQListView的设置折叠时的小细节
今天在完成如下折叠功能时,双击常规可以正常折叠,但是点击自编程时,程序报错。ASSERT: "last < rowCount(parent)" in file itemmodels\qabstractitemmodel.cpp, line 2782折叠时用到的是以下方法。[protected] void QAbstractItemModel::beginRemoveR...原创 2020-03-31 16:48:00 · 999 阅读 · 0 评论 -
Qt使用obj->metaObject()->className()获取类名称后进行对比
bool res = obj->metaObject()->className() == QStringLiteral("需要对比的类名称");一个简单的小tips~做个记录原创 2020-03-25 09:47:14 · 1617 阅读 · 0 评论 -
Qt加载图片libpng warning: iCCP: known incorrect sRGB profile提示后自制重新保存PNG图片的小程序
这个警告不会影响程序运行,如果是调试程序就会和调试信息混杂。在遇到多图片使用时提示信息看着也很烦人,就写了个简单的小工具来重新保存PNG图片,界面如下:源码和程序:下载链接...原创 2020-03-17 10:55:23 · 183 阅读 · 0 评论 -
Qt信号槽的第五个参数的使用
最近利用Qt的线程来进行文件的存读取操作,具体是收到读取文件的信号时开启线程来进行读取。当读取完返回数据时(图像数据,后来已弃用此方法),当不断的回传图像数据时,会造成线程堵塞,程序卡死。这就要用到信号与槽的第5个参数了:Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型...原创 2020-03-17 10:03:26 · 1145 阅读 · 0 评论 -
Qt QObject类单例模式的写法
#include <QObject>class emit02 : public QObject{ Q_OBJECTpublic:// explicit emit02(QObject *parent = nullptr); static emit02* Get_test_emit();private: ...原创 2020-03-09 15:33:04 · 844 阅读 · 0 评论 -
“在注释中遇到意外的文件结束” Qt换成msvc编译后出现的问题
utf8 格式出错,有一个注释是/* 中文*/,这里由于编码问题,中文和英文联合起来,吞掉了注释的*/,导致bug。只需要改为/* 中文 */。所以为了不出错,中文注释可能应该前后加英文字符,如前面加空格,后面加‘.’号。/*绑定槽函数*/ //报错 /*.绑定槽函数.*/ //编译通过...原创 2020-03-06 17:37:12 · 315 阅读 · 0 评论 -
Qt的QTimer::singleShot的用法记录
[static] void QTimer::singleShot(int msec, const QObject *receiver, const char *member)在给定的时间间隔后,此静态函数将调用一指定的槽函数。使用此功能非常方便,因为无需费心timerTimer或创建本地QTimer对象。例如:QTimer::singleShot(3*1000,this, &...原创 2020-03-04 17:35:59 · 3896 阅读 · 0 评论 -
自己对MVC模式在Qt上的应用的学习记录
架构有很多,但是用在C/C++后端集成管理项目上的架构,常用的是MVC,这也是主流的架构。所以博主重点学习和参考的也是MVC架构。下面是MVC架构的知识点讲解。https://www.cnblogs.com/9A91/p/4241027.html(MVC初级理解)https://blog.csdn.net/zch501157081/article/details/51967549(MVC深...转载 2020-03-04 17:09:28 · 229 阅读 · 0 评论