
Qt
宇龍_
有些白嫖党连个赞都不点甚至直接抄走了说原创,新发布的都写到专栏里吧,哎。
私聊给群号,可进Q群咨询问题。
展开
-
Qt开发http server,兼容Qt4(QtWebApp)
下载QtWebApphttp://www.stefanfrings.de/qtwebapp/QtWebApp.zip解压后将httpserver中的文件引入到项目中编写CHttpServer类,继承自HttpRequestHandler,并重新实现service接口,代码如下:CHttpServer.h#ifndef CHTTPSERVER_H#define CHTTPSERVER_H#include <QObject>#include "QtWebApp/httpse原创 2021-09-18 16:59:07 · 1171 阅读 · 1 评论 -
QTcpServer newConnection槽函数不调用,问题解决
这个问题困惑了几天,用VS2015+Qt5.9.1,基于QTcpServer开发tcp服务器,不管是单线程还是多线程,客户端能成功连接,但是槽函数始终不会被调用,搞的我都怀疑人生了,我又用qt写了一遍,发现是可以被调用的,难道这是VS编写Qt项目的一个bug?当然不是!最后才发现,我在Debug模式下链接的是Qt5Network.lib,换成链接Qt5Networkd.lib就没有问题了!Release则需要链接Qt5Networkd.lib未经允许,禁止转载...原创 2020-12-16 15:11:21 · 1962 阅读 · 15 评论 -
Qt post数据乱码
m_pNetWorkManager = new QNetworkAccessManager(this);connect(m_pNetWorkManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(networkFinishSlot(QNetworkReply*))); //处理post返回QString data="你好,在干嘛?";QNetworkRequest request;request.setUrl(QUrl("http://www.baid.原创 2020-10-29 15:40:42 · 959 阅读 · 0 评论 -
Qt生成dump文件并调试
1、编译时生成pdb文件:在.pro文件中加两行配置QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFOQMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO然后重新编译,即可在exe文件的目录下生成.pdb文件。2、项目中增加崩溃时生成dump文件的代码#include <tchar.h>#include <Windows..原创 2020-09-21 13:47:52 · 2680 阅读 · 3 评论 -
QT中ODBC连接数据库提示QSqlDatabase: QODBC driver not loaded
1.到Qt安装目录下,找到ODBC驱动文件(D:\Qt\Qt5.11.1\5.11.1\msvc2017_64\plugins\sqldrivers)2.在个人QT工程的目标程序目录下建立文件夹sqldrivers,并将对应数据库的驱动文件放进去,文件夹名字一定要是sqldrivers......原创 2020-08-28 11:33:09 · 5148 阅读 · 0 评论 -
Qt实现弹窗后背景淡化
这里提供一种思路,在弹窗和主窗体中再加一层黑色背景的透明度为0.7的窗体该中间层窗口的初始化代码如下m_pMask是主窗体类的成员QWidget*: m_pMask = new QWidget(this); m_pMask->setWindowFlags(Qt::Window|Qt::FramelessWindowHint |Qt::WindowSystemMenuHint|Qt::WindowMinimizeButtonHint|Qt::WindowMaximizeButt...原创 2020-08-28 10:53:32 · 2715 阅读 · 0 评论 -
Qt中读取Qprocess的输出中文显示乱码问题
在qt程序中使用Qprocess执行子程序然后调用其readAllStandardOutput()方法得到子程序的标准输出,但是该标准输出在转换为QString后,发现中文部分出现了乱码。针对该问题,我最后发现是process的输出编码与QT的默认编码不同导致的,子程序使用VS编写,VS的程序输出默认是操作系统本地编码的输出,在中文系统中,这种输出默认是GB2312编码。而QT为了跨平台和统一字符编码,QString的编码格式默认为Unicode编码,问题就出在这儿。因此,在得到Qprocess输出后原创 2020-08-28 10:41:16 · 2276 阅读 · 0 评论 -
qt无边框窗口点击任务栏不能最小化
如果只setWindowFlags(Qt::FramelessWindowHint);去掉边框,此时会发现,当程序打开后,单击任务栏的按钮,会发现无法最小化,隐藏窗口。解决的方法是:setWindowFlags(Qt::Window|Qt::FramelessWindowHint |Qt::WindowSystemMenuHint|Qt::WindowMinimizeButtonHint|Qt::WindowMaximizeButtonHint);再次测试,发现边框去掉了,而且鼠标点击任务栏图标,也可原创 2020-08-28 10:38:13 · 2156 阅读 · 2 评论 -
Qt换行符分割字符串
用正则表达式QRegEx就可以了:QStringList list = QString.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);这样返回的List就是以行分割的。原创 2020-08-28 10:36:47 · 3711 阅读 · 3 评论 -
Qt QTableWidget 去掉默认行号
QHeaderView *header = tblList->verticalHeader();header->setHidden(true);// 隐藏行号转载 2020-07-17 16:23:36 · 2522 阅读 · 0 评论 -
QT项目中加入大的资源文件导致编译报错
在工程pro为文件上添加CONFIG += resources_big适用Qt5,不支持Qt4原创 2020-07-07 16:30:48 · 752 阅读 · 0 评论 -
QT5中文乱码解决
利用QStringLiteral//w为QWidget类的对象,设置窗口标题w.setWindowTitle(QStringLiteral("你的名字"));QStringLiteral原创 2020-07-07 16:26:27 · 293 阅读 · 0 评论 -
QNetworkRequest访问https的连接失败的解决方案
当URL为带https的安全连接时,就一直返回失败。后来查资料才知道需要带一些安全配置,代码如下:m_request = new QNetworkRequest();//需要加入ssl的关键代码QSslConfiguration config = m_request->sslConfiguration();config.setPeerVerifyMode(QSslSocket::VerifyNone);config.setProtocol(QSsl::TlsV1SslV3);m_re原创 2020-07-03 14:43:12 · 2735 阅读 · 0 评论 -
qt中使用SendMessage
调用SendMessage非常简单,同MFC中一样,但在Qt中如何如何接收消息呢?重写winEvent方法即可bool QWidgetB::winEvent( MSG *message, long *result ){ if(message->message == (WM_USER+1000)) { QString *text = (QString*)message->wParam; QString str = *text; ui.textEdit->append原创 2020-06-23 15:17:42 · 2754 阅读 · 0 评论 -
qt中调用windows api需要注意的
在qt中调用windows api除了引入头文件还要引入lib文件比如调用FindWindow,只引入头文件(windows.h)则编译时会报错需要在.h或.cpp文件中加上#pragma comment(lib,"user32")原创 2020-06-22 10:23:26 · 2151 阅读 · 0 评论 -
The Q_OBJECT macro at the beginning of the class definition is necessary for all classes that define
只有在类中加入了Q_OBJECT宏,你才能使用QT中的signal和slot机制。注意加了该宏后一定要重新qmake一下!原创 2020-06-10 14:53:02 · 255 阅读 · 0 评论 -
编译后的qt库如何在别的电脑直接使用
之前由于官方没有提供vs2012 for Qt4.8.5,故自己用2012编译了一次,比较耗时,甚至还有一些源码的修改,想着以后再用这个版本就不用编译了,直接拷贝整个目录过去就行,结果并不能在别的电脑使用,原因可能是编译的时候qmmake.exe中有些路径之类的是写死的。为了不重新编译,照着网上的方法,在qmake.exe同目录下,新建一个qt.conf文 本文件即可,不用重新编译也不用修改二进制(记住哦,保存的编码一定要是ANSI格式,这个可以用windows自带记事本的另存为功能确认),文件内容为:原创 2020-06-10 14:43:54 · 916 阅读 · 0 评论 -
Qt读取配置文件乱码QSettings
设置QSettings对象的编码格式与文件编码格式一致如: QSettings set("./test.ini",QSettings::IniFormat); set.setIniCodec(QTextCodec::codecForName("utf8")); //配置文件是utf8编码 QSettings set("./test.ini",QSettings::IniFormat); set.setIniCodec(QTextCodec::codecForNa原创 2020-05-23 12:37:31 · 490 阅读 · 0 评论 -
Qt生成xml文件
通过QXmlStreamWriter来写xml文件非常的简单方便xml文件的内容如下:<?xml version="1.0" encoding="utf-8"?><school> <teacher name="Lee"> <student name="Job"/> <student name="Tom"/> </teacher></school>代码如下:原创 2020-05-19 21:25:16 · 1198 阅读 · 2 评论 -
Qt无边框窗口鼠标拖动
很长一段时间没有用Qt了,今天又用到了这个知识点,虽然很简单但也做个记录吧。能理解原理就很简单了和MFC差不多。需要重写窗体的三个函数,分别是:鼠标按钮按下,鼠标移动,鼠标按钮释放void mousePressEvent(QMouseEvent *event);void mouseMoveEvent(QMouseEvent *event);void mouseReleaseEvent(QMouseEvent *event);函数体为 void testWidget::mo.原创 2020-05-19 20:44:52 · 371 阅读 · 0 评论 -
update和repaint的区别
以下参考自官方文档:repaint:调用repaint函数会立刻执行重绘,某些场景是需要这样做的比如动画等。update:推荐使用该函数,其原因是该函数不会立即执行重绘,而是等到线程重新回到消息循环时再执行重绘,相比于repaint立即重绘函数而言,调用update函数时,会允许Qt尽量的优化速度以及闪烁的问题。 ...原创 2019-01-23 22:31:32 · 1213 阅读 · 0 评论 -
Qt信号量QSemaphore
Qt中的信号量是由QSemaphore类提供的,信号量可以理解为对互斥量功能的扩展,互斥量只能锁定一次而信号量可以获取多次,它可以用来保护一定数量的同种资源。acquire()函数用于获取n个资源,当没有足够的资源时调用者将被阻塞直到有足够的可用资源。release(n)函数用于释放n个资源。 下面通过一个典型用例:生产者和消费者,来实现这二者之间的同步。整个工程就一个main.cpp,文...转载 2019-01-22 13:11:46 · 603 阅读 · 0 评论 -
QWaitCondition 的正确使用方法
Qt中的QWaitCondition和QMutex的关系如同stl中的condition_variable和mutex的关系几乎是一样的。在网上看到了一篇博文写的不错,故转载了。简单用法QWaitCondition 用于多线程的同步,一个线程调用QWaitCondition::wait() 阻塞等待,直到另一个线程调用QWaitCondition::wake() 唤醒才继续往下执行。......原创 2019-01-21 22:12:45 · 582 阅读 · 0 评论 -
使用moveToThread时的内存释放以及注意事项
在Qt中,使用线程主要有两种方式。1、自定义线程类,继承自QThread,并重写run方法即可。该方法就不再阐述了。2、就是推荐使用的方法。示例代码如下:1、自定义Worker类,将线程中的逻辑在该类中以槽函数的方式实现:Worker.h#ifndef WORKER_H#define WORKER_H#include <QObject>class W...原创 2019-01-17 21:01:27 · 16391 阅读 · 0 评论 -
QT QPointer类
QPointer类是一个模板类,是为了QObject提供的一种监视指针。QPointer模板类类似于标准库中的weak_ptr弱引用特性。即不管理内存,仅提供监视以及访问 QPointer 指针引用的对象被销毁时候,该指针会自动指向NULL举例说明//假设Test类继承自QObjectTest* t1 = new Test;QPointer<Test> t2 = ...原创 2019-01-15 22:22:43 · 765 阅读 · 0 评论 -
Qt之界面实现技巧——包括任务栏不显示,自定义窗体,最大化最小化按钮等等全面总结
总结一下,在开发Qt的过程中的一些技巧!可遇而不可求。。。一、主界面1、窗口 最小化 最大化 关闭按钮、显示状态自定义 setWindowFlags(Qt::CustomizeWindowHint); setWindowFlags(Qt::WindowCloseButtonHint); //只要关闭按钮 setWindowFlags(Qt::Win......原创 2019-01-10 22:10:36 · 11576 阅读 · 1 评论 -
根据vld打印的信息查找内存泄露代码
通过vld来查找所编写的qt代码中内存泄露的代码位置非常简单。具体安装的配置的方法网上一搜一大堆,我在此就不讲了。当出现内存泄露的时候,vld的打印信息如下:其中圈起来的地方,就包括了内存泄露的代码所在的文件以及代码所在的行数...原创 2019-01-10 09:54:54 · 9859 阅读 · 1 评论 -
用Qt实现圆角窗口
两种方法可以实现:1、通过重写paintEvent事件来绘制圆角窗口2、使用setmask方法 第一种方法,这里我们需要重写paintEvent方法,在此之前先设置窗体为 this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明 this->setWindowFlags(Qt::Frame...原创 2019-01-09 23:02:56 · 2587 阅读 · 1 评论 -
Qt之窗体透明 (三种不同的方法和效果)
关于窗体透明,经常遇到,网上的资料倒不少,也不知道写的时候是否验证过,很多都不正确。。。今天就在此一一阐述! 以下各效果是利用以前写过的一个小程序作为示例进行讲解!(代码过多,贴主要部分) 正常状态效果如下: 这部分代码就不贴了(主要讨论透明效果)。 一、全透明 setWindowOpacity(0.5); 取值范围为:0....转载 2019-01-09 21:21:43 · 3123 阅读 · 0 评论 -
css,qss font-family常用的黑体宋体等字体中英文对照
在实现网页效果或窗体界面时,细节很重要,字体也不例外,CSS:font-family常用字体中英文对照如下:微软雅黑: Microsoft YaHei宋体:SimSun黑体:SimHei仿宋: FangSong楷体: KaiTi隶书:LiSu幼圆:YouYuan华文细黑:STXihei华文楷体:STKaiti华文宋体:STSong华文中宋:STZhon...转载 2019-01-09 14:08:49 · 4015 阅读 · 0 评论 -
Qt去掉最大化最小化按钮和最大化
w.setWindowFlags(w.windowFlags()&~Qt::WindowMaximizeButtonHint&~Qt::WindowMinimizeButtonHint);w.showMaximized();原创 2019-01-08 17:25:42 · 4019 阅读 · 0 评论 -
QT QODBC driver not loaded
本人亲自测试,在Qt4下同样可行:编译C:\Qt\Qt5.0.1\5.0.1\Src\qtbase\src\plugins\sqldrivers\sqldrivers.pro然后在C:\plugins\sqldrivers\下面的文件复制到C:\Qt\Qt5.0.1\5.0.1\mingw47_32\plugins\sqldrivers\下在project.pro中增加以下内容QT...转载 2018-12-29 13:19:42 · 4083 阅读 · 0 评论 -
Qt程序管理员运行、修改编译后的exe图标以及处理判断windows10系统出错的问题
1、至于qt如何修改图标和获取UAC权限,只需要几个文件边可以实现,如下 manifest.rc#include <windows.h>ID_ICON ICON DISCARDABLE "qt.ico"CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "winadmin.exe.manifest"wina...原创 2018-12-25 20:55:25 · 848 阅读 · 0 评论 -
qt遍历ini配置文件
假设有一个ini文件的内容如下:[test]test11=666test22=a[ceshi]aaa=11bbb=32ccc=0执行如下代码,遍历ini文件int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QSettings set("./test.ini",QSet...原创 2018-12-19 15:41:42 · 3222 阅读 · 0 评论 -
Qt获取程序目录和工作目录
//获取exe所在的目录qDebug()<<"current applicationDirPath: "<<QCoreApplication::applicationDirPath();//获取当前进程所在工作目录qDebug()<<"current currentPath: "<<QDir::currentPath();注:工作目录和e...原创 2018-12-17 21:24:44 · 4575 阅读 · 1 评论 -
Qt程序只运行一个实例
#include <QSharedMemory>QSharedMemory shared("name");//随便填个名字就行if (shared.attach()){ return 0;}shared.create(1);在main函数中加入以上代码,Qt生成的exe程序就只能启动一次了。--------------------- 原文:https...转载 2018-12-17 20:40:10 · 962 阅读 · 0 评论 -
QT如何捕获全局的键盘事件?
QT如何捕获全局的键盘事件?方法一:继承QApplication类,并重载notify()函数Qt是用QApplication::notify()函数来分发事件的。想要在任何事件过滤器查看任何事件之前先得到这些事件,重载这个函数是唯一的办法。通常来说事件过滤器更好用一些,因为不需要去继承QApplication类。而且可以给QApplication对象安装任意个数的事件过滤器,相比之下,...转载 2018-12-16 22:45:19 · 7813 阅读 · 0 评论 -
关于Qt控制台程序隐藏窗体
有时候用qt开发了控制台程序但有不想让他显示,怎么办?打开pro文件,注释这一句即可:#CONFIG += console呵呵~原创 2018-12-15 23:15:11 · 13309 阅读 · 6 评论 -
QNetworkAccessManager下载文件失败,服务器重定向
今天在使用QNetworkAccessManager下载文件的时候,无法下载到文件,但是通过浏览器却可以成功下载,最后发现问题出在这里:就是下载的网址出现了重定向,浏览器是可以正确重定向的,但是我们的程序却没有处理,解决办法---核心代码如下:pNetworkRpy = pNetworkMgr->get(request);connect(pNetworkRpy,SIGNAL(fi...原创 2018-12-13 17:14:42 · 2025 阅读 · 0 评论 -
QLabel自动换行是可以解决的
QLabel自动换行是可以解决的,我在UBUNTU下试过中文,没有任何分隔符,以下是代码部分1. 让QLabel自适应text的大小,直接用下面的代码:LabelName->adjustSize();2. 让QLabel能够自动判断并换行显示:LabelName->setGeometry(QRect(328, 240, 329, 27*4)); //四倍行距LabelNam...转载 2018-12-13 15:00:33 · 1245 阅读 · 0 评论