子建莫敌
热爱生活,拥抱技术
展开
-
Qt for Android申请允许管理所有文件权限
在Android平板上使用Qt开发App时,文件删除操作受到操作系统严格的权限管理和沙盒机制限制。具体原因包括沙盒隔离机制、权限控制和分区存储。为解决这一问题,可以通过申请“允许管理所有文件”权限来实现。实现过程包括在AndroidManifest.xml中添加权限声明,并在Activity中根据设备Android版本选择性地请求权限。对于Android 11及以上版本,需调用Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION来请求权限。程序运行时会动态检查原创 2025-05-12 18:11:40 · 202 阅读 · 0 评论 -
TCP黏包解决方法
TCP客户端每100ms发送16006字节数据,但由于TCP的MSS限制,数据会被拆分为1440字节的小包传输,可能导致拆包和粘包现象。拆包指数据被分割为多个不完整包,粘包指多个数据包被合并为一个包,接收端难以处理。使用Qt编写TCP服务器时,readAll()函数读取的是接收缓冲区的全部数据,而非单个数据包,因此需要手动处理拆包和粘包问题。通过累加接收数据长度,判断是否达到16006字节,若未达到则继续接收,若超过则裁剪多余部分作为下一包数据的开头。该方法有效解决了TCP拆包和粘包导致的数据解析问题。原创 2025-05-09 10:39:03 · 143 阅读 · 0 评论 -
Qt5 Mac系统检查休眠
Qt5.10提供了多种方式来检测系统休眠和唤醒,尤其是在macOS上,我们需要利用Objective-C的`NSWorkspace`结合Qt的桥接机制来实现。例如,可以创建一个`SystemSleepMonitor`基类,定义`systemDidEnterSleep`和`systemDidWakeUp`的信号,然后分别为Windows/Linux和macOS实现相应的子类。在实际项目中,你可以根据运行的平台动态选择合适的子类,并连接对应的信号槽,从而实现跨平台的系统休眠和唤醒检测。原创 2025-04-03 10:01:52 · 187 阅读 · 0 评论 -
CMake+MinGW编译grpc1.50.2动态库
CMake+MinGW编译grpc1.50.2动态库原创 2025-03-06 09:53:44 · 106 阅读 · 0 评论 -
Qt5.6.3/5.14.2/5.12.11安装程序下载路径
Qt5.14离线安装包链接原创 2025-02-27 17:57:30 · 645 阅读 · 0 评论 -
Qt for Android下QMessageBox背景黑色、文字点击闪烁
最近在基于Qt开发安卓应用的时候,在红米平板上默认QMessageBox出现之后,背景黑色,并且点击提示文字会出现闪烁,影响用户体验。最终发现是系统对主题适配不好导致的。原创 2025-02-27 11:31:15 · 423 阅读 · 0 评论 -
Qt信号与槽底层实现原理
在Qt中,信号与槽是实现对象间通信的核心机制,它可以让一个对象的状态变化通知其他对象,而无需让对象之间保持紧密的依赖关系。这个机制不仅提供了松耦合的通信方式,还允许灵活地在运行时动态地连接信号和槽。Qt的信号与槽机制并非在编译阶段直接绑定,而是在程序运行时通过Qt的元对象机制进行动态搜索和匹配。这种灵活的设计是通过元对象编译器(MOC)来实现的。原创 2025-01-21 10:11:02 · 151 阅读 · 0 评论 -
Qt6 for android平板上下载文件
【代码】Qt6 for android平板上下载文件。原创 2024-12-11 12:12:35 · 65 阅读 · 0 评论 -
QTabWidget的每个tab居中显示图标和文本
使用QTabWidget,给每个tab添加了图标之后,文字和图标之间有间距,没有完美居中显示。遇到此问题,尝试了多种办法,均不理想,最终自定义QTabBar,重绘tab,完美解决。原创 2024-10-11 13:53:31 · 822 阅读 · 0 评论 -
使用 adb 调试工具看安卓运行日志
使用 adb 调试工具看安卓运行日志原创 2024-10-09 09:27:20 · 446 阅读 · 0 评论 -
自定义QPushButton,通过设置icon,在不同状态下显示不同的图标
默认QPushButton设置icon后,当鼠标hove或者press时,图标不会变更为对应状态的图片。通过重写按钮,设置图标值,实现不同状态对应不同图标原创 2024-08-29 09:35:39 · 755 阅读 · 0 评论 -
完美解决ubuntu系统QtCreator无法输入中文
在Ubuntu18 上安装搜狗输入法,启用fcitx输入系统之后Qt Creator 无法输入中文,原因是缺少fcitx的支持库libfcitxplatforminputcontextplugin.so。原创 2023-08-02 16:13:05 · 2757 阅读 · 0 评论 -
万能脚手架
【代码】脚手架。原创 2023-05-14 23:37:25 · 30 阅读 · 0 评论 -
Qt生成不重复的随机数
此方法可以在循环中产生不重复的随机。可以保证每次生成不一样。原创 2023-05-12 18:39:29 · 498 阅读 · 0 评论 -
【亲测可用】安装Qt提示“无法下载存档 http://download.qt.io/online/qtsdkrepository...“
安装Qt提示“无法下载存档 http://download.qt.io/online/qtsdkrepository..."原创 2023-04-03 11:18:48 · 15755 阅读 · 13 评论 -
Qt读xml文件
QXmlStreamReader类通过简单的流式API为我们提供了一种快速的读取xml文件的方式。他比Qt自己使用的SAX解析方式还要快。所谓的流式读取即将一个xml文档读取成一系列标记的流,类似于SAX。而QXmlStreamReader类和SAX的主要区别就是解析这些标记的方式。使用SAX解析时,应用程序必须提供一些处理器(回调函数)来处理来自解析器的一系列的所谓的xml事件,不同的xml标记会触发不同的事件,从而进行相应的处理。原创 2023-03-11 15:47:34 · 2156 阅读 · 0 评论 -
Qt三种方式远程连接MySQL数据库(ODBC方式、DSN方式、直连方式)
说明:通过Windows操作系统的ODBC数据源(64位)创建用户DSN或者系统DSN时,请选择“MySQL ODBC 8.0 Unicode Driver”。二、DSN方式远程连接MySQL数据库(程序方式创建ODBC)一、ODBC方式远程连接MySQL数据库。三、直连方式远程连接MySQL数据库。原创 2022-12-13 23:05:02 · 3563 阅读 · 1 评论 -
QT 在线安装速度慢解决方案
qt5.15之后的版本官方不再提供独立的安装包了,官方提供了一个安装工具进行在线安装,这个和vs2019通过工具进行安装是类似的。原创 2022-12-13 13:38:36 · 981 阅读 · 1 评论 -
Qt5.15+MinGW编译32位MYSQL驱动
步骤:第一步,安装MYSQL5.7MySQL官网下载的最新版本的*.msi安装程序,注:下载的Qt如果是32位,需要下载安装32位数据库,已经32位MYSQL驱动需要C的connector而不是C++,即装x86的C connector。第二步,使用QtCreator编译MYSQL驱动插件首先,打开源码MYSQL插件的工程(我的路径E:\Qt\qt-everywhere-src-5.15.0\qtbase\src\plugins\sqldrivers\mysql)。然后,修改pro文件原创 2021-03-31 11:30:54 · 639 阅读 · 0 评论 -
Windows下PyQt5环境的搭建
首先安装 python3, 这个不必多说了,不会的自行百度安装 PyQt5在 cmd 中输入pip install PyQt5 -i https://mirrors.aliyun.com/pypi/simple用到了 阿里 镜像源,下载速度应该很快在 cmd 中进入 python3 交互环境 import PyQt5 没有报错,说明安装成功安装qtdesinger (qt设计师)这是一个图形化界面设计的软件, 也就是所谓的 拖拖拽拽 就可以设计好一个软件,可以减少软件布局的一部分时.原创 2021-03-04 19:54:03 · 190 阅读 · 2 评论 -
Qt窗口点击窗口外区域自动关闭窗口
Qt自动关闭窗口的方式:利用 Qt::Popup,可以实现点击窗口外区域自动关闭窗口; 利用 Qt::WA_NoMouseReplay,可以避免重复触发窗口外的鼠标点击事件(仅关闭窗口); 利用 activeWindows(),可以解决Qt::Popup属性的窗口无法输入中文的问题(show之后调用);问题:点击其他区域,回关闭窗口,但点击到触发窗口显示的按钮,窗口被关闭了。解决办法: bool MyWidget::event(QEvent * e){ if (QEvent::Sh原创 2021-02-01 20:28:25 · 2534 阅读 · 0 评论 -
Qt程序无法再macOS11上使用的解决办法
qputenv("QT_MAC_WANTS_LAYER", "1");原创 2021-01-18 15:01:44 · 2379 阅读 · 5 评论 -
Qt 在 Windows 下默认字体比较丑,但是我们有办法修改它
一直觉得 Qt 在 Windows 系统上的默认字体不太好看,不过自己写程序时自己去指定字体也很方便,就没怎么在意。这几个月专门用 Qt 写了一些程序,发现这还真的是个问题,因为包括官方的 Qt Creator 在内,都没有开放给用户自定义默认字体的设置,天天看着实在不怎么舒服。本来 Windows 系统是允许用户自定义桌面字体的,Win10 不知是出于去桌面化还是什么考虑,把这个功能又拿掉了。当然,通过修改注册表还是可以修改系统默认字体的,而且我知道确实有这样的第三方工具。不过鉴于 Win10 对桌面原创 2021-01-08 11:06:33 · 2774 阅读 · 1 评论 -
Qt pro文件中区分平台
unix { TARGET = appname}macx { TARGET = appname2}win32 { TARGET = appname3}原创 2020-12-16 10:14:46 · 1152 阅读 · 0 评论 -
qt使用http下载文件(断点续传)
最近使用Qt需要用到http下载文件,其中关于断点续传的问题被困扰了,在这里记下来。1,Qt使用http实现下载主要用到的3个类QNetworkAccessManager,QNetworkRequest,QNetworkReply。2,主要用到的类的信号与槽(个人理解)如下: m_reply = m_networkAccessManager->get(request); //请求下载connect(m_reply, SIGNAL(downloadProgress(qint64, q...原创 2020-12-15 21:07:18 · 3708 阅读 · 1 评论 -
Qt 之 HTTP 请求下载(支持断点续传)
https://blog.csdn.net/GoForwardToStep/article/details/52704464本文旨在修正上述博客遇到的断点下载问题:断点之后下载的文件偏大解析:下载过程中,downloadProgress(qint64, qint64)信号触发的次数和readyRead()信号触发的次数不一样。onDownLoadProgress(qint64, qint64)槽中接收的字节数滞后了。解决办法:m_bytesCurrentReceived为当前下载的文件大小原创 2020-12-15 20:57:39 · 670 阅读 · 2 评论 -
Qt项目生成map和pdb文件
默认情况下,Qt项目在window系统发布版本不生成map/pdb文件。将以下内容添加到.pro文件中:QMAKE_LFLAGS_RELEASE+=/MAPQMAKE_CFLAGS_RELEASE += /ZiQMAKE_LFLAGS_RELEASE +=/debug /opt:ref原创 2020-12-03 00:08:29 · 1842 阅读 · 1 评论 -
QTabWidget的样式
Tab标签所在行的样式QTabWidget::tab-bar { alignment:left; top:3px; left:5px; right:5px;}设置QTabWidget 的Tab标签下面窗格的样式QTabWidget#tabwidget_DevMang::pane {border-top: 3px solid black;border-...原创 2020-11-30 13:55:27 · 3654 阅读 · 0 评论 -
qt 5.14.2 (vs2017)pdb文件目录
https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5142/qt.qt5.5142.debug_info.win64_msvc2017_64/原创 2020-10-29 21:13:21 · 1175 阅读 · 0 评论 -
禁止Windows程序自适应比例缩放
1.调用SetProcessDPIAwareHINSTANCE hUser32 = LoadLibrary(L"User32.dll");if (hUser32) { typedef BOOL (WINAPI* LPSetProcessDPIAware)(void); LPSetProcessDPIAware pSetProcessDPIAware = (LPSetProcessDPIAware)GetProcAddress(hUser32, "SetProcess原创 2020-10-17 23:57:20 · 1521 阅读 · 0 评论 -
win10+VS2017+QT 5.14.2 QWebEngine编译HTML5 MP4支持及相关疑难问题解决
编译方案网上都有,这是stackoverflow上最详尽的一篇:https://stackoverflow.com/questions/50510457/how-to-compile-qt-webengine-5-11-on-windows-with-proprietary-codecs/50510458#50510458碰到的疑难问题:1. win10系统,运行qmake -- -webengine-proprietary-codecs,报告需要Windows SDK version 10.0.1原创 2020-09-02 10:18:06 · 2872 阅读 · 1 评论 -
Qt报错:ASSERT failure in QWidget: “Widgets must be created in the GUI thread.“
原因由于Qt规定了UI主线程只有一个,在另外一个线程生成UI相关对象或对对其进行相关操作例如QWidget或其子类的构造和相关操作,都会出现此断言错误 。解决办法通过信号槽实现线程通讯方式,在非UI主线程发生个信号,让UI主线程调用槽函数进行相关的界面操作。添加connect连接方式为:Qt::QueuedConnection...原创 2020-08-26 13:55:35 · 2106 阅读 · 0 评论 -
QtCreator配置vscode风格
先上效果,一睹为快具体操作:首先找到QtCreator安装路径下的styles目录[你的安装路径]+\Qt5.14.2\Tools\QtCreator\share\qtcreator\styles新建vscode.xml复制下面的内容,并保存<?xml version="1.0" encoding="UTF-8"?><style-scheme version="1.0" name="VSCode"> <style name="Text" f原创 2020-08-06 09:40:12 · 4712 阅读 · 2 评论 -
Qt error: reference to type ‘const QVariant‘ could not bind to an rvalue of type ‘...‘
Qt调用setProperty出现上述报错先来看下Qt帮助文档bool QObject::setProperty(const char *name, const QVariant &value)将对象的name属性的值设置为value。如果使用Q_PROPERTY在类中定义了属性,则成功时返回true,否则返回false。 如果该属性未使用Q_PROPERTY定义,因此未在元对象中列出,则将其作为动态属性添加并返回false。通过metaObject()和dynamicPro原创 2020-07-17 11:57:14 · 4813 阅读 · 0 评论 -
Qter大牛
1.OE 大牛(大牛的博客)贡献值:①开源项目1: C++11 编写可复用多线程任务池 (开源OEasyPool)→文章地址②开源项目2:Qt 实现 QQ 截图工具(开源OEasyScreenshot)→文章地址2.前行之路还需前行(http://blog.csdn.net/goforwardtostep)3.乌托邦(http://blog.csdn.net/taiyang1987912)贡献值:①仿QQ控制面板→文章地址4.一去丶二三里(http://blog.csdn.net原创 2020-05-28 13:48:04 · 222 阅读 · 0 评论 -
Qt气泡提示框(自动消失)
#ifndef FUNCTION_MESSAGE_WIDGET_H#define FUNCTION_MESSAGE_WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACEclass QPaintEvent;QT_END_NAMESPACEclass FunctionMessageWidget : public QWidget{ Q_OBJECTpublic: explicit FunctionMessageWidget(Q.原创 2020-05-28 11:09:03 · 2796 阅读 · 0 评论 -
QTabWidget/QTabBar的tab标签页的文字对齐方式设置
QTabWidget和QTabBar的共同点,都很多tab。但tab上面包含文字的控件是个tabline。尝试通过qss设置文本对齐方式:QTabBar::tab{ text-align:left;}结果:无效然后又尝试了qproperty-alignment:AlignLeft;QTabBar::tab{ qproperty-alignment:AlignLeft;、}结果:无效无奈只能自定义QProxyStyle#include <QPr原创 2020-05-15 18:00:20 · 4250 阅读 · 1 评论 -
QtWebEngine和QtWebEngineProcess
在部署Qt WebEngine应用程序时,需要QtWebEngineProcess.exe,默认情况下,和执行文件同目录。Qt WebEngine采用Chromium提供的多进程模块,该模块要求QtWebEngineProcess.exe随应用一起部署。每个QWebEngineView或WebEngineView实例都会启动一个QtWebEngineProcess.exe进程。为了放置暴露应用程序是Qt开发的,可以将QtWebEngineProcess.exe重命名。通过设置QTWEB.原创 2020-05-14 18:03:21 · 8366 阅读 · 0 评论 -
QtCreator添加文件头注释
Qt ,最近几年发展比较快,应用也比较广的跨平台开发GUI框架。项目开发过程中,经常需要注释相应文件。具体操作:1.打开QtCreator->工具->选项->文本编辑器->片段2.组选择“C++”->添加根据个人喜好添加触发3.添加文件头注释内容://////////////////////////////////////////...原创 2020-04-27 18:45:20 · 1716 阅读 · 1 评论 -
Qt超大文本文件读取
Qt读取,显示几百M甚至几个G的超大文本文件时,调用QFile::open()读取,容易出现加载卡死。对此,可以调用QFile::map()反射内存。uchar *QFileDevice::map(qint64 offset, qint64 size, QFileDevice::MemoryMapFlags flags = NoOptions)Maps size bytes of t...原创 2019-12-12 13:52:14 · 13457 阅读 · 3 评论