Qt
1390811049
这个作者很懒,什么都没留下…
展开
-
qt.qpa.plugin: Could not find the Qt platform plugin “windows“ in ““
在 QApplication a(argc, argv); 之前设置环境变量 QByteArray qtdir = qgetenv("QTDIR"); /*QString strDir = "D:\\Qt\\myDebugQt\\myDebugQt";*/ QString strPlatforms = qtdir + QString(R"(\plugins\platforms)"); qputenv("QT_QPA_PLATFORM_PLUGIN_PATH", strPlatforms.toLoca原创 2021-07-14 16:34:25 · 357 阅读 · 0 评论 -
Qt插件开发
一、Qt插件机制1、Qt插件简介插件是一种遵循一定规范的应用程序接口编写出来的程序,定位于开发实现应用软件平台不具备的功能的程序。2、Qt插件APIQt提供了两种API用于创建插件:一种是高阶API,用于扩展Qt本身的功能,如自定义数据库驱动,图像格式,文本编码,自定义样式等;一种是低阶API,用于扩展Qt应用程序。二、高级 API:编写 Qt 扩展编写一个扩展 Qt 本身的插件是通过继承适当的插件基类、实现一些功能并添加一个宏来实现的。有几个插件基类。派生插件默认存储在标准插件目录的子目录中原创 2021-06-20 00:29:41 · 1573 阅读 · 0 评论 -
Qt在父类构造函数中无法触发子类的槽函数(虚函数)
class A : public QObject{ Q_OBJECTpublic: A(QObject *parent); ~A();signals: void sigTest(QString strName);public slots: virtual void slotTest(QString strName); //父类的槽函数是一个虚函数};class B : public A{ Q_OBJECTpublic: B(QObject* parent);原创 2021-04-08 22:05:11 · 1396 阅读 · 0 评论 -
QObject源码分析
QObject是Qt的基类QObject object;qDebug() << sizeof (object);QObject的大小是8,除了虚函数表指针需要的4个字节以外,另外的4个字节是QScopedPointer d_ptr;QObjectDataQObjectData中存储了Qt对象的基础数据class Q_CORE_EXPORT QObjectData {public: virtual ~QObjectData() = 0; QObject *q_ptr原创 2021-03-13 22:30:00 · 340 阅读 · 1 评论 -
Qt格式化文本
数字格式化,保留三位小数double B1 = 0.5;QString::number(B1,'f',3);ui->tbxReview->setPlainText(result);日期格式化QDateTime time = QDateTime::currentDateTime();QString strTime = QString("%1%2%3") .arg(time.date().year(), 4, 10, QChar('0'))原创 2021-02-23 13:40:45 · 623 阅读 · 0 评论 -
Qt样式表
什么是QSSQSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制。QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少,可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上。一、名词解释1.选择器选择特定的类,一般为一个可以定制样式表的 Qt 类选择器 { 属性 : 值 ;}QPushButton { color: red }2. 辅助控制器辅助控制器 一词是相对于选择器存在的原创 2020-12-13 16:03:21 · 2127 阅读 · 1 评论 -
编译QT源码
下载QT源码1.离线安装安装的时候勾选Sources2.直接下载源码例如5.12.0的源码下载地址:qt-everywhere-src-5.12.02. 编译工具下载ActivePerlActivePerl下载地址:默认安装时会添加ActivePerl到环境变量。测试添加是否成功:Python下载Python,添加Python到环境变量。测试添加是否成功:RubyRuby下载地址:RubyInstaller for Windows安装时勾选添加到环境变量的选项:原创 2020-09-04 00:45:19 · 3890 阅读 · 0 评论 -
Qt处理windows系统消息实现全局热键
QT5中处理windows系统消息QAbstractNativeEventFilterNativeEventFilter,本地事件过滤器,在Qt中,当需要对系统消息或者自定义消息进行处理时会用到。相关的有QAbstractNativeEventFilter类和两个函数(installNativeEventFilter、removeNativeEventFilter)一QAbstractNativeEventFiltervirtual bool nativeEventFilter(const .原创 2020-07-21 19:54:38 · 908 阅读 · 0 评论 -
QWidget
QWidget是所有GUI控件的基类QWidget属性frameGeometry : const QRectframeSize : const QSizex : const intpos : QPoint框架的几何区域和大小和坐标,框架指窗口的最外层geometry : QRect内部绘图区域大小和坐标...原创 2020-07-16 19:43:07 · 285 阅读 · 0 评论 -
qmake,make,nmake
gcc是GUN compiler Collection (GUN编译器套件),也可以简单理解为编译器,他可以编译多种语言。make是批处理工具,通过调用makefile文件(抽象层次很低)中的命令来进行多文件编译和链接。maekfile + make可以认为是unix下的项目管理工具。cmake是跨平台的项目管理工具。在windows下会生成visual studio的工程,在Linux下会生成makefile。还可以生成exlipse工程文件。cmake是抽象层次更高的项目管理工具,cmake命令原创 2020-06-30 00:26:08 · 513 阅读 · 0 评论 -
Qt5.13.0静态编译
所用到的库,都上传到了githubhttps://github.com/nangongyuan/Qt-5.13.0-.git所需包含的头文件,这里直接用了绝对路径,实际使用中最好不要E:\Qt\Qt5.13.0\5.13.0\Src\qtbase\include\QtCoreE:\Qt\Qt5.13.0\5.13.0\Src\qtbase\include\QtGuiE:\Qt\Qt5.13.0\5.13.0\Src\qtbase\include\QtWidgetsE:\Qt\Qt5.原创 2020-06-10 00:18:24 · 1803 阅读 · 2 评论 -
Qt在VS中使用单元测试
在工程的解决方案中,新建一个单元测试项目AutoTest,Qt控制台项目,勾选Core,Test模块创建CTest类#include <QObject>#include <QtTest>class CTest : public QObject{ Q_OBJECTpublic: CTest(); ~CTest();private slots:...原创 2020-08-09 14:10:41 · 1348 阅读 · 4 评论 -
Qt环境变量接口
获取环境变量接口QByteArray qgetenv(const char *varName)QString qEnvironmentVariable(const char *varName, const QString &defaultValue)QString qEnvironmentVariable(const char *varName)设置环境变量接口varN...原创 2020-04-23 15:01:25 · 758 阅读 · 0 评论 -
Qt翻译
如何进行翻译第一步:写规范的代码 用 QString 包裹不需要翻译的文本 用 tr() 包裹需要翻译的文本 定义上下文 如何翻译非 Qt 类 第一种:利用 QCoreApplication::tr() 函数 第二种:利用 QCoreApplication::translate() 函数 第三种:利用 QCoreApplication 类的 Q_DECLARE_T...原创 2020-04-21 00:09:06 · 1728 阅读 · 1 评论 -
Qt自定义数据类型
1.创建一个自定义类型Qt框架下开发时,创建一个自定义类型,需要确保创建的这个自定义类型符合QMetaType规定的所有要求,即它必须满足以下几个条件:有一个默认的公有构造函数 有一个公有的拷贝构造函数 有一个公有的析构函数下面的Message类的定义满足这些条件,可以定义成一个新的数据类型:class Message{public: Message(); ...原创 2020-04-20 22:22:30 · 2678 阅读 · 1 评论 -
Qt5.13.0使用Mysql
Qt连接Mysql依赖sqldrivers文件夹中的qsqlmysqld.dll qsqlmysql.dll以及mysql的dlllibmysql.dllsqldrivers文件夹中的qsqlmysqld.dll qsqlmysql.dll需要自己编译使用creator打开源码中的mysql.pro工程修改mysql.proTARGET = qs...原创 2020-04-16 20:51:41 · 333 阅读 · 0 评论 -
Qt小技巧
移除旧的样式//移除原有样式style()->unpolish(ui->btn);//重新设置新的该控件的样式。style()->polish(ui->btn);获取类的属性const QMetaObject *metaobject = object->metaObject();int count = metaobject->proper...原创 2020-03-25 10:38:39 · 270 阅读 · 0 评论 -
QTableWidget
添加一行int iRow = ui->tableWidget->rowCount();ui->tableWidget->setRowCount(iRow + 1);//总行数增加1动态添加控件//第一列 动态添加QTableWidgetItemint iRow = ui->tableWidget->rowCount();QTableWid...原创 2020-03-21 23:59:00 · 276 阅读 · 0 评论 -
QT 正则表达式
匹配ip是否有效QRegExp regExp("((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"); if (!regExp.exactMatch(strIP) || !regExp.exactMatch(strSubNetMask)) { QMessageBox::informatio...原创 2020-03-21 17:47:31 · 686 阅读 · 0 评论 -
Qt多屏处理
#include "CMainWindow.h"#include <QDebug>#include <QDesktopWidget>CMainWindow::CMainWindow(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); connect(ui.pushButton, &Q...原创 2020-03-16 23:20:38 · 366 阅读 · 0 评论 -
QT延迟执行
一、阻塞型延时阻塞的原理就是:在延时期间,本线程的事件循环得不到执行。1、QThread类的sleep()最简单的延时方法就是使用QThread类的sleep(n)、msleep(n)、usleep(n),这几个函数的不良后果就是,GUI会在延时的时间段内失去响应,界面卡死,所以,这三个函数一般用在非GUI线程中。QThread::msleep(50);//阻塞延时50ms2、使用定...原创 2020-03-16 11:50:48 · 4030 阅读 · 0 评论 -
Qt依赖Dll库打包
先使用qt的windeployqt.exe打包qt的依赖dll然后通过pe信息读取其它依赖dll,从当前目录,系统目录中找出对应的dll开发该工具原创 2019-12-30 10:29:38 · 487 阅读 · 0 评论 -
Qt解析json
int CLoginLogic::getPTZObject(char* pJson){ QJsonParseError jsonError; QJsonDocument jsonDocument(QJsonDocument::fromJson(pJson, &jsonError)); if (jsonError.error != QJsonParseError::NoError)...原创 2019-12-28 15:44:37 · 222 阅读 · 0 评论 -
Qt多线程
Qt中使用多线程常用的方式有2种1. 继承QThread重写run函数线程在执行过程中是不能释放线程对象的可以使用QThread*thread=newQThread(this);connect(thread,SIGNAL(finished()),thread,SLOT(deleteLater()));注意这2句代码是在主线程中执行的线程对象属于主线程,deleteLa...原创 2019-12-27 15:06:10 · 493 阅读 · 0 评论 -
QT保存文件对话框内存泄露
QFileDialog::getSaveFileName调用系统原生的保存文件对话框存在内存泄露使用umdh定位程序内存泄露的位置,发现是系统原生的保存文件对话框存在内存泄露。QString QFileDialog::getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), c...原创 2019-12-26 10:45:15 · 1056 阅读 · 0 评论 -
Qt信号槽
1Qt::AutoConnection根据signal和slot所处的线程自动决定。如果sender线程和receiver在同一个线程。那么这个执行是同步的。相当于DirectConnection如果发射信号的线程和接受者所依附的线程不同,则等同于队列连接。如果判断信号和槽所在的线程呢?根据sender和receiver是哪个线程创建的,哪个线程创建就属于哪个线程,也可以通...原创 2019-11-06 12:08:30 · 935 阅读 · 0 评论 -
Qt定时器问题
如果我们在某个类中要用到定时器的功能,可以选择两种方式:1.如果此类继承于QObject,可以直接调用以下函数:int QObject::startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer)此函数开启一个定时器,但只返回该定时器的编号,我们无法获取定时器对象(即使创建了定时器对象也不应该是QTimer类...原创 2019-11-05 11:33:25 · 2266 阅读 · 0 评论 -
Qt更方便的使用线程池
使用Qt的线程池必须继承QRunnable这样有的时候用起来很麻烦#include <memory>#include <functional>#include <QRunnable>class CThreadPoolTask : public QRunnable{private: CThreadPoolTask(std::function&l...原创 2020-08-09 14:11:09 · 337 阅读 · 0 评论 -
QAxObject来操作Excel的一些命令
连接Excel控件QAxWidget excel("Excel.Application");显示当前窗口:excel.setProperty("Visible", true);更改 Excel 标题栏:excel.setProperty("Caption", "Invoke Microsoft Excel");不显示任何警告信息setProperty("DisplayAl...原创 2019-08-30 11:48:29 · 1804 阅读 · 0 评论 -
Qt 跨平台(Win32\Linux).pro配置 用宏定义区分系统
win32 {#顾名思义,这里就是设置WIndows下的连接库,以及Visual C++2010编译器的的设置选项}unix {#原理和win32一样}或者用下面的单个写法win32:INCLUDEPATH += $$PWD/netsdk/win32unix:INCLUDEPATH += $$PWD/netsdk/linux64win32:LIBS ...原创 2019-09-26 11:48:40 · 9031 阅读 · 1 评论 -
Qt unicode字串转中文
有时候,直接在html里面获取的字符串就是带有"\u"的,然后直接显示的时候"\u"也会显示出来。这里就是教你如何去掉"\u"。其实这并不是乱码他就是这么传输的\u标识Unicode 后面的6211是两个字节的16进制数0x62,0x11Unicode编码2个字节表示一个字符QString filename = "\\u6211\\u662f\\u4e2d\\u6587";do {...原创 2019-09-28 01:15:04 · 2006 阅读 · 0 评论 -
Qt Http请求
1.请求body类型Content-Type:multipart/form-datavoid MainWindow::onPushButtonClick(){ QNetworkRequest request; QNetworkAccessManager* naManager = new QNetworkAccessManager(this); connect(na...原创 2019-09-28 22:12:43 · 881 阅读 · 0 评论 -
QT乱码问题
std::string转QString乱码QString::fromLocal8Bit(std::string().c_str())QString转std::string乱码std::string(QString().toLocal8Bit())程序乱码Qt5中关于中文的建议解决方案是:1.保证源程序源码文件是UTF-8,然后用预处理命令#pragma e...原创 2019-08-27 09:27:39 · 1325 阅读 · 0 评论