
Qt
e5Max
这个作者很懒,什么都没留下…
展开
-
QActionGroup的妙用
在Qt中,有时我们经常要处理这样一种情况:在任何时间点,多个QAction只能有一个是激活的。遇到这种情况,我们通常是自己编码,通常信号-槽的连接来实现这类功能。殊不知,在Qt中有一个类,它能帮助我们自动实现这项功能,它就是QActionGroup。 QActionGroup类把一组操作项(actions)组合在一起。 以下是来自例子 Menus 中的一段示例代码:原创 2013-08-10 11:58:26 · 8068 阅读 · 0 评论 -
QTableView 去除Item选中的虚线框
(1)实现如下一个类 #include "NoFocusDelegate.h" void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const { QStyleOptionViewItem item...原创 2018-02-27 17:24:08 · 3333 阅读 · 0 评论 -
QTextEdit 的 placeholderText 属性
QTextEdit 的 placeholderText 属性 QTextEdit 和 QLineEdit 都有 placeholderText 属性,即在输入内容之前,给予用户一些提示信息。 但是其二者该属性对于不同输入法有不同的表现。具体表现在: 1、QLineEdit 当输入内容时,placeholderText内容会自动清空; 2、QTextEdit 当输入内容时,place原创 2017-12-20 16:51:34 · 9116 阅读 · 1 评论 -
QFile::write 写文件会变大的问题
项目里遇到一个问题:qint64 QFile::write(const QByteArray &byteArray)这个接口写文件后,会导致文件变大,明明只有40M的(byteArray)写完后文件居然有 60M多,但文件能正常打开,除了大小,其它暂时都没有发现有什么问题。(好像在Mac下没有问题)查了查,发现write的返回值就是60M多,所以感觉是write函数莫名原创 2017-08-08 19:10:07 · 3643 阅读 · 0 评论 -
Qt中点击关闭任务栏而不退出程序的实现方法
// 重新覆写关闭事件响应函数protected:virtual void closeEvent(QCloseEvent *event);void MyWidget::closeEvent(QCloseEvent *event){ qDebug() "Recieve close event"; event->ignore(); // 忽略关闭事件原创 2017-07-31 11:00:32 · 4529 阅读 · 0 评论 -
OBS编译问题汇
1、fatal error LNK1112: module machine type ‘x64’ conflicts with target machine type ‘X86’ 用QtCreator+cmake打开CMakeLists.txt后,直接编译,会报如上错误。经查,可能是QtCreator+cmake打开CMakeLists.txt默认使用32位(X86)架构解析。编译时,编译器和Ma原创 2017-01-19 13:23:19 · 939 阅读 · 0 评论 -
Qt生成二维码
项目中赶时髦,也想使用二维码来向PAD传输一些信息。因此,想在PC客户端这边添加一个二维码存储一些需要传输的信息。 于是研究了Qt生成二维码的方案,首先要感谢互联网网友们的辛苦劳动,网上这类的帖子和文章很多。原创 2016-11-04 14:18:32 · 1359 阅读 · 1 评论 -
Qt将文件夹压缩成ZIP文件
在项目中需要将本地的一个文件夹上传到服务器,于是想到先将起压缩成ZIP文件,然后上传。在网上搜了一下,用Qt将文件夹压缩成ZIP文件,大概有两种方法: 1、使用 QProcess 直接调用本地的exe完成压缩工作。 2、使用QuaZIP库。QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库。详见Qt之zip压缩/解压缩(QuaZIP)原创 2016-11-04 13:31:42 · 8524 阅读 · 0 评论 -
Qt使用post上传压缩文件
在项目中需要将本地的一个文件夹上传到服务器,于是想到先将起压缩成ZIP文件,然后上传。压缩功能的做法见另一篇博文Qt将文件夹压缩成ZIP文件. 由于经验所限,不太懂网络编程。根据例子,使用 QNetworkAccessManager 和 QNetworkRequest 上传文件内容,总是错误。最后在一些好友的帮助下,终于解决了问题,记下来备忘。也希望给遇到类似问题的同学一个帮助。原创 2016-11-04 13:43:25 · 5907 阅读 · 1 评论 -
Qt用线程渲染图片(UI)
class TNImageLoadThread: public QThread{ Q_OBJECTpublic: explicit TNImageLoadThread(const QString &filename, const QSize &targetSize, QObject *parent = Q_NULLPTR);signals: voi...原创 2018-02-23 15:02:58 · 1945 阅读 · 1 评论 -
Qt Json类 对 long long int 类型的支持
项目中遇到一个巨大的BUG,原因是Qt的json类QJsonDocument在将服务器返回来的json串转换成json对象QJsonObject时,出现了问题。也就是当long long int 类型的整型作为json字段时,该值很可能超过QJsonValue所支持的范围。例如,如果在服务器返回的json串中,有一个字段是整型(long long), 那么在转换的时候可能出错。即 {"Id": 9...原创 2018-02-23 15:36:26 · 5102 阅读 · 1 评论 -
Qt与MSVC中文乱码问题的解决方案
一、问题是什么?在学习Qt编程的过程中,大多数人都遇到过中文乱码的问题。总结起来有三类:1. Qt Creator中显示的汉字变为乱码,编辑器上方有“Could not decode "..." with "UTF-8"-encoding. Editing not possible.”的错误提示。此时,出现乱码的文档是不可编辑的。如下图所示,“你好中文!”这5个中文字符变成了乱码:2. Qt Cr...转载 2018-07-04 10:32:27 · 2258 阅读 · 2 评论 -
Qt与JS数据交互
QT版本:5.6.2核心类:QWebEngineView, QWebChannel 1、C++和HTML通过websocket通信,通过官方的 qwebchannel.js 实现。2、C++和HTML共用一个对象并以此进行通信,即通过QWebChannel的registerObject函数。void QWebChannel::registerObject(const QString &id...原创 2018-04-19 15:01:01 · 5235 阅读 · 1 评论 -
QWebEngineView拦截Url请求设置
原文链接:https://www.cnblogs.com/sz-leez/p/6552764.htmlQWebEngineUrlRequestInterceptor类提供了一个拦截URL请求抽象基类,可通过实现QWebEngineUrlRequestInterceptor::interceptRequest接口拦截并修改相应的UIL请求,以达到相应需求效果,比如设置“Accept-Language...转载 2018-03-31 17:10:01 · 4660 阅读 · 0 评论 -
QtWebEngine 在某些机器上崩溃的问题
项目发布后,在某些机器上出现崩溃的现象,经查,是在启动初始化QtWebengine模块时导致的崩溃。然后测试了Qt的官方例子simpleBrownser,在这些机器上同样也出现崩溃,开始以为是缺少资源文件或者是系统需要补丁。久查未果,后来还是在Qt的Bug列表中找到了答案,不得不说, Qt的Bug列表真是个好东西。1、So far all crash reports in QTBUG-49954 ...原创 2018-03-31 14:38:27 · 11464 阅读 · 4 评论 -
Qt之四方分割器QuadSplitter
转载自:http://ju.outofmemory.cn/entry/185735 在Qt经常会用到分割器QSplitter,可以对多个控件进行水平或者垂直分割,但有一些特殊的需求无法满足,比如:四方分割。。。QuadSplitter是qt-apps里面的一个应用,挺不错的,拿来和大家分享一下,下载地址:QuadSplitter。效果如下:...转载 2018-03-02 16:12:05 · 749 阅读 · 0 评论 -
QWebengineView 对自定义协议的拦截处理
重新实现 TNWebEnginePage 的 acceptNavigationRequest 函数:// If the function returns true, the navigation request is accepted and url is loaded.bool MyWebEnginePage::acceptNavigationRequest(const QUrl &u...原创 2018-02-23 17:43:41 · 3105 阅读 · 0 评论 -
Qt中从应用程序拖出文件或图片到桌面
void XXXX::mouseMoveEvent(QMouseEvent *event){ this->viewport()->setCursor(Qt::PointingHandCursor); QString fileName /*=指向一个本地存在的文件 */; if (event->buttons() & Qt::LeftButton) ...原创 2018-03-02 14:20:40 · 2147 阅读 · 3 评论 -
QTcpServer和QTcpSocket的使用
最近产品要做一个PC端与PAD端通信收发信息的功能。研究了一下Qt的实现。看到一个很好的帖子,简单易懂。仿照写了一个例子,记录下来备忘。原创 2016-11-04 11:48:02 · 2137 阅读 · 0 评论 -
error: C1083: Cannot open source file: *idl
c1:-1: error: C1083: Cannot open source file: ‘release\hv678web.idl’: No such file or directory错误原因: 在activex工程里,出现这个原因,可能是项目依赖的其它动态库没有被拷贝到编译(生成)目录下,将其拷贝过去,问题得到解决。原创 2016-09-22 15:10:20 · 1168 阅读 · 0 评论 -
Qt线程点滴
1、子类化线程类 QThread。2、不子类化QThread:我们只需要子类化一个QObject,然后将其move到QThread就行了。但是要注意一点,子类化的QObject的构造函数始终是在主线程中运行,调用MoveToThread 只会使得QObject的槽函数,在触发的情况下,在设定的QThread中运行。说到底,QObject的方法,那个线程调用,就会在哪个线程中运行。QObje转载 2015-05-24 18:32:38 · 771 阅读 · 0 评论 -
Qt 线程基础(QThread、QtConcurrent等)
原文见:http://blog.youkuaiyun.com/dbzhang800/article/details/6554104#转载 2015-05-24 18:34:57 · 929 阅读 · 0 评论 -
Qt国际化——多语言翻译时值得注意的一个编程问题
问题: 在用Qt开发的项目中,可以很轻松的实现多语言切换的功能,即国际化。关于这方面的资料网上不少,我这里不谈这个问题,而是记录一个在实际编程中值得注意的一个实践问题。 我们知道,在不是继承自QObject的类中,如果使用 tr(“撤销”); 这样的代码会编译出错;我们也知道, tr(const char * sourceText,...) 其实是 QOb原创 2015-01-28 21:49:20 · 3300 阅读 · 0 评论 -
关于QString转换成数值
在Qt 中QString 转换成数值有直接调用的接口:1) inttoInt ( bool * ok = 0, int base = 10 ) const2)doubletoDouble ( bool * ok = 0 ) const如果想知道转换是否成功,可以通过检查参数ok返回的值是否为原创 2014-04-03 17:11:08 · 2919 阅读 · 0 评论 -
Qt递归拷贝和删除目录
最近在翻看项目代码时,看到了这两个函数,想到这个功能十分常用,因此拿出来与大家分享,希望对大家有用。几点说明:1、记得当初写代码那会,是参考了网上的帖子写的,做了一点小修改。因此代码源于网络。2、同时感谢原作者,只可惜当时没能记下原文网址,实在抱歉!刚才搜了一下,也没搜着,大家若发现原文出处,请跟帖提醒。谢谢!3、到目前为止,代码在项目中测试、运行正常,大家若使用时发现Bug,请跟帖指原创 2013-09-23 11:39:46 · 6197 阅读 · 2 评论 -
VS2005中使用Qt4.8.5遇到的问题
这两天项目组搭建了一个VS2005+Qt4.8.5的开发环境,在同事的机器上都已经搭建好了,并且编译,运行一切顺利。如果是使用VS2008或者VS2010的话,Qt官方网站已经有了对应的编译好的Qt安装包,直接下载安装即可。安装顺序为VS -> Qt-> AddIn.我们因为使用的是VS2005,所以需要自己编译对应的Qt版本(领导已经编译好打包分发给了我们)。分三个问题说:一,V原创 2013-10-30 17:45:28 · 3946 阅读 · 0 评论 -
在Qt中如何使用QtDesigner创建的UI文件(一)
使用Qt有一些时间了,一直在IDE环境(qtcreator和VS2003+集成器)中使用,自然少了很多麻烦的步骤。但是在享受这种便利的同时,我们也失去了理解更多知识背后的点滴。在IDE中,如果我们要开发一个对话框,通常是使用 “新建—>Qt—>Qt设计师界面类” 这样IDE会自动的帮我们生成三个文件(filename.ui, filename.h,filename.cpp)。qmake也非常智能,原创 2013-08-10 08:23:03 · 34260 阅读 · 1 评论 -
在Qt中如何使用QtDesigner创建的UI文件(二)
除了在编译时处理ui文件外,Qt还提供了在运行时动态加载ui文件的机制。通过QtUiTools模块的QUiLoader可以在运行时加载ui文件。 加载ui文件的方式如以下代码所示: QWidget* TextFinder::loadUiFile() { QUiLoader loader; QFile file(":/forms/textfinder.ui");原创 2013-08-10 10:35:48 · 5142 阅读 · 0 评论 -
一些有用的网站
纯Qt程序: http://www.qtcn.org/ http://qt-apps.org/ http://kde-apps.org/代码下载收藏: http://sourceforge.net http://www.oschina.net/ http://github.co转载 2015-11-01 09:23:00 · 746 阅读 · 0 评论 -
如何为无法获取进度百分比的耗时操作增加“伪进度条”?
在实际开发中,可能会遇到这样的场景:“一个操作非常耗时,但却无法获取其进度百分比”。造成这种情况的原因可能有: 1)该操作属于第三方库(泛指我们使用但无法修改的第三方代码,因此质量有高有底),可能由于第三方库作者没有意识到这个操作在某些情况下会非常耗时,没有提供进度值。 2)某些操作压根就无法计算进度或者计算进度要牺牲极大的效率。这种场景,执行这样的耗时操作会导致程序UI假死。为了提高用户体验,原创 2015-12-31 13:40:57 · 2652 阅读 · 0 评论 -
为什么release版本的activex 注册失败?而debug版本的却能注册成功?
一. 问题: 最近项目中需要做一个activex控件嵌入到浏览器中使用。 1、很快用 VS2013+Qt5.6.1 新建了一个 ActiveQt Server 工程,并简单写了一个弹框的测试功能,编译,注册,测试,一切OK。 2、将项目移植到 ActiveQt Server 工程中后,编译,注册,调试,也一切OK。 3、可待打包到别的机器发布安装的时候,报注册失败,经过一番简单的排查后,确定原创 2016-09-22 15:02:00 · 1355 阅读 · 0 评论 -
使用Qt的QAxObject将Excel文件转成CSV文本文件
需要注意:以下代码需要在GUI环境的程序中才能运行,否则 setControl() 将会报错。#include <QDir>#include <QAxObject>#include <QScopedPointer>#include <QDebug>bool ExcelToCsvFile(const QString &excelFileName, const QString &csvFileNa原创 2016-02-18 11:32:21 · 2553 阅读 · 0 评论 -
Qt之设置窗口背景
以前遇到的很多小知识,从今天开始都一点一点记录下来。。。 窗口背景无非两种:背景色、背景图片。Qt中窗口背景如何设置?下面介绍三种方法: 一、QPalette设置背景 二、实现paintEvent,使用QPainter来绘制背景 三、使用QSS来设置背景 关于QSS的使用不想多说,一般我不用QSS设置窗口背景,也不建议使用。(注意:这里是对于窗口而言)。如果是子部件当然可以转载 2016-02-16 16:43:42 · 1693 阅读 · 0 评论 -
Qt 中定义单例对象
再Qt中定义单例对象,有一个专门的宏 Q_GLOBAL_STATIC。通过这个宏不但定义简单,还可以获得线程安全性。 关于这个宏的使用,见下面三种代码截图。原创 2016-02-16 16:00:54 · 1417 阅读 · 0 评论 -
Qt Creator 中的添加“注释段落”的快捷方法
原文地址:点击打开链接 作为一名合格的程序员,漂漂亮亮的注释是必须的!!怎么在Qt Creator中自动补全漂亮的注释呢 ?以下的段落注释,楼主个人别较喜欢。当然也可以自定义自己比较喜欢的注释段落。1第一步、打开Qt Creator ,菜单,“工具”->”选项“->”文本编辑器“。第二步、选择 “片段”选项,然后,点击“添加”按钮。编辑自己的“触发”转载 2016-01-08 09:57:19 · 12245 阅读 · 2 评论 -
静态代码检查工具 cppcheck 的使用
CppCheck是一个C/C++代码缺陷静态检查工具。不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误。所谓静态代码检查就是使用一个工具检查我们写的代码是否安全和健壮,是否有隐藏的问题。比如无意间写了这样的代码: int n = 10;char* buffer = new char[n];buffer[n] = 0;原创 2013-09-09 19:58:15 · 42240 阅读 · 3 评论 -
QtPropertyBrowser简介
一,简介QtPropertyBrowser 是qt公司提供的一个关于属性设置页的解决方案。该框架的源代码在Qt的安装目录下可以找到。 QtPropertyBrowser 框架的使用比较简单。其核心或基本类有以下5个:Qt***PropertyBrowser(继承自QtAbstractPropertyBrowser) 属性浏览器(窗体)。Qt***PropertyManager(继承自QtAbs原创 2015-12-05 14:04:11 · 7529 阅读 · 0 评论 -
Qt应用程序自动重启
老有人问如何让Qt的应用程序自动重启,稍微写一点,也顺便理理自己的思路 2011.10.26自动重启,也就是退出当前进程,启动一个新的进程。于是,先看程序如何退出退出Qt程序的一般结构如下:int main(int argc, char** argv){ QApplication app(argc, argv); Widget w; w.s转载 2014-08-27 15:58:24 · 7698 阅读 · 0 评论 -
Qt线程同步的几种方法
一、QMutex类 QMutex类就像一把锁,在互斥量之前上锁(QMutex::lock()),然后在使用完互斥量之后解锁(QMutex::unlock())。比如下面的代码:void someMethod(){ mutex.lock(); qDebug()<<"Hello"; qDebug()<<"World"; m...转载 2018-08-15 15:05:54 · 10990 阅读 · 1 评论