Qt
Eosin_Sky
软件工程专业,现在开始把遇到的问题和总结的一些东西都写入博客!
展开
-
Qt5.5.1通过设置环境变量来实现qt中ui的缩放(适配HIDPI)
改变qt的缩放倍率,可在QApplication未创建的时候调用操作:QString strCurrentDpi = 1.5f;qputenv("QT_DEVICE_PIXEL_RATIO", strCurrentDpi.toLatin1());来对qt的ui进行全局缩放。原创 2021-10-26 17:57:17 · 822 阅读 · 0 评论 -
Qt6.0.4解决在在高清屏幕下按钮渲染有问题的情况
使用Qt6.0.4时,在能开启HIGH DPI屏幕的windows系统上运行时渲染的按钮会有错误(莫名其妙多一条白线)经测试需要在QApplication加一个标记ClientApplication::setAttribute(Qt::AA_EnableHighDpiScaling); ClientApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::RoundPreferFl原创 2021-09-26 14:48:33 · 522 阅读 · 0 评论 -
如何使用QAbstractItemModel定制自己想要的数据模型(使用TreeView模型讲解)
本例和大家交流如何使用QAbstractItemModel定制自己想要的数据模型.比如,突然想做一个类似QQ一样的好友界面:该怎么弄?先别慌,一步步来,今天就和大家交流如何简单快捷的弄出一个类似的玩意儿。(直接上代码,相关说明已经注释在代码中。)CFriendViewModel.h#ifndef CFRIENDVIEWMODEL_H#define CFRIENDVI...原创 2019-09-02 20:46:20 · 2905 阅读 · 0 评论 -
Qt使用带透明的图片制作异形窗口
希望达到的效果就是窗口的透明区域不会被检测到窗口。原理是使用QWidget自带的setMask函数,为窗口设置一层蒙版,而这个蒙版我们可以使用所需要的图片来生成,本例我是根据透明度来生成蒙版,也就是使用QImage的createAlphaMask方法获得一个基于透明度的蒙版。(如果有其他需要也可以根据特定颜色生成蒙版,这里就不再阐述了。)本例我使用了一只手的图标(带透明度的png)作为背景图:...原创 2019-08-21 11:37:02 · 1194 阅读 · 2 评论 -
使用QImage处理图片为黑白
原理,根据qGray计算出r、g、b像素的灰度(亦或是自己的算法,比如我喜欢把rgb r、g、b加上偏移量v之后求平均值)记得保留alpha通道。此操作比较简单我直入主题提供两种实现方式,第一种,使用qCray计算灰度:QImage GraizeImage( const QImage& image ){ int w =image.width(); int h...原创 2019-08-09 11:35:32 · 3354 阅读 · 0 评论 -
使用QIamge对图片进行加亮操作
原理比较简单,就是对每个像素的r、g、b的值加上亮度值v,然后保留alpha通道。(注意考虑加上v之后可能小于0切大于255的情况)这里我就直入主题了。//* 增加亮度QImage AdjustBrightness(QImage image, int brightness)、{ QImage origin = image; QColor oldColor; int delt...原创 2019-08-09 10:43:44 · 1233 阅读 · 0 评论 -
使用Qt绘制艺术字(字体硬发光效果)
最近的项目中有用到艺术字,网上也找不到合适的用例(也有其他绘制艺术字的示例,但都不支持回车键和自适应对齐方式),在这样的情况下只能自己动手丰衣足食。原理也很简单,使用QPainterPath先把文字添加进去,然后使用strokePath函数先生成文字对应的路径,然后再用画刷把这个路径给填充(fillPath),这样就做出了字的发光效果, 然后在使用drawPath把字原来的样子给画出来。发光效...原创 2019-08-06 13:32:54 · 4229 阅读 · 0 评论 -
Qt实现能力值控件(多边形能力值控件)
本例分享如何使用Qt实现一个多边形能力值控件CCapabilityDiagram效果如下:图1直入主题,头文件:CCapabilityDiagram.h#ifndef CCAPABILITYDIAGRAM_H#define CCAPABILITYDIAGRAM_H#include <QWidget>#include <QMetaObj...原创 2019-07-29 18:03:24 · 1839 阅读 · 4 评论 -
将Qt Widgets嵌入到QML界面中的一种示范
*QML离屏渲染Qt Widgets使用Qml中的控件QQuickPaintedItem来对Qt Widgets进行渲染以达到Wdigets可以很自然的显示在QML界面中.直入主题,首先我们为这个例子建立一个类QmlOSRExpMainWindow:.h#ifndef QMLOSREXPMAINWINDOW_H#define QMLOSREXPMAINWINDOW_H#in...原创 2019-06-17 16:32:59 · 7000 阅读 · 20 评论 -
Qt下使用WIN32下的API通过域名得到实际IP地址,通过IP地址得到域名实例
使用到的WIN32 API:gethostbyname() 通过域名获取host信息gethostbyaddr()通过ip获取host信息依赖的dll:ws2_32.libLIBS += ws2_32.lib通过域名获取host信息实例:int main(int argc, char* argv[]){QString displayerString;WSAD...原创 2019-02-19 17:00:28 · 669 阅读 · 0 评论 -
使用Qt通过HTTP请求数据(post和get)
我当前使用的Qt版本是5.5.1 该版本的HTTP相关处理模块在遇到重定向的时候不会自动重定向,需要手工处理,我在这个例子中处理了这种方式。话不多说我直接上示例代码了:类名:CHttpSupport.h文件#ifndef CHTTPSUPPORT_H#define CHTTPSUPPORT_H#include <QNetworkAccessManager>c...原创 2019-02-15 15:55:53 · 12824 阅读 · 9 评论 -
Qt使用Sqlite
在Qt的sql中自带了sqlite3以及之前版本的sqlite,默认是sqlite3了。首先随意建一个Qt程序,在.pro文件中加入sql模块:执行qmake接下来就可以使用sqlite了,看代码示例:#include <QDebug>#include <QSqlDatabase>#include <QSqlDriver>#inclu...原创 2018-09-26 16:24:20 · 2344 阅读 · 0 评论 -
Qt实现截取屏幕小程序
[注]:本程序在Windows下实现,按理来说在其他平台也可用(只需要改一下CCuter的某个函数,文中红字标注)先上效果图(我两个显示屏整张图太大,只截关键部分上传):以下是代码,两个部分:一个是CCuter截图选择器,一个是CScreenShoot截图程序CCuter.h#ifndef CCUTER_H#define CCUTER_H#include <QWi...原创 2018-09-25 11:55:35 · 761 阅读 · 0 评论 -
使用Qt无线网络模块时在Windows下可能网络波动(WIFI打开的情况下)
使用WIFI的时候,Qt的Wifi模块默认每隔10s会检测WIFI模块的运行情况,在Windows下这样的检测会导致网络波动。解决方案是将Qt的默认10s改成-1s也就是不检测能显著消除网络波动。设置环境变量以解决问题:qputenv("QT_BEARER_POLL_TIMEOUT", QByteArray::number(-1));Qt QNetworkAccessManager causing...翻译 2018-06-13 17:33:57 · 1588 阅读 · 0 评论 -
使用QProcess启动外部exe可能启动失败的解决方案
在使用QProcess启动外部程序的失败有可能启动失败为了保险起见,在启动的时候传入的exe路径需要用\"包起来例如:QString tagDir = "D:/te st/tag.exe"QProcess:startDetached(tagDir)由于tagDir中有空格,所以启动失败。换成这样的方式就能正确启动:QString tagDir = "D:/te ...原创 2018-05-30 20:40:20 · 11567 阅读 · 2 评论 -
QWebView为什么时而会崩溃
Qt4.8.5 QtWebKit QWebView 用户栈检查崩溃问题的思考最近在项目中,发现在使用Qt4.8.5 提供的QWebView与网页交互的时候,m_pWebView->page()->mainFrame()->evaluateJavaScript(tmp);QtWebKitd4.dll模块偶尔会出现崩溃,如图 中断查看调用堆栈(加载QtWebkitd4.pdb 才可...转载 2018-06-11 16:51:23 · 2124 阅读 · 1 评论 -
使用Qt在Window下捕获并屏蔽Alt + F4窗口消息
方法:重载QWindow 或者QWidget的nativeEvent信号,并处理WM_KEYDOWN和WM_SYSKEYDOWN两个case,如下:bool COriginalDialog::nativeEvent(const QByteArray &eventType, void *message, long *result){ if (eventType == "window...原创 2018-05-07 20:00:44 · 2761 阅读 · 0 评论 -
Qt实现SAX2方式解析XML文件(简单有效、老少皆宜,200MB大小4-7层的XML解析只需要30s)
Qt解析XML文件,我这个案例可以说非常实用了,而且解说相当于是手把手教了,不管是老手还是新手都能轻易掌握的。原创 2018-02-09 17:47:16 · 834 阅读 · 4 评论