Qt
张明奇-琦玉
乐观,自信,阳光,相信明天会更好
展开
-
关于Qt4K高分屏自适应问题
从Qt5.14开始提供了高分屏缩放策略设置,需要在main函数前面设置 QApplication::setHighDpiScaleFactorRoundingPolicy(Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);如果不想要高分屏,希望程序永远保持默认的尺寸,你需要在main函数前面设置 QApplication::setAttribute(Qt::AA_Use96Dpi);在main函数最前面设置QT的环境变量。新版本的Qt支持不是整数的缩放。原创 2022-11-01 15:31:31 · 1677 阅读 · 0 评论 -
关于 Qt使用QJsonObject解析失败的问题。
在QJsonObject转.toInt()/toLongLong()等类型时,转换失败。但是转toString()没有任何问题。这样,就可以结局问题。原创 2022-10-28 09:21:31 · 613 阅读 · 0 评论 -
QtPropertybrower源码编译
在加入源码代码时,Qt moc会分析代码,如果发现头文件中有Q_OBJECT宏,就会生成moc_filename.cpp文件,如果发现源文件中含有Q_OBJECT宏,就会生成filename.moc文件。所以,添加完源代码后的第一件事查看上述文件是否生成,特别是filename.moc,测试这些文件是否可以编译成功,如果不可以,查看项目vcxproj源码,检查项目文件的参数设置是否正确。另外,如果出现连接错误,检查相应的filename.cpp的属性,查看项类型是否为"c/c++编译器"或者其他属性。原创 2022-09-08 14:51:15 · 635 阅读 · 0 评论 -
如何处理 Qt 控制台应用程序中的按键事件?
示例一、控制台阅读器#ifndef CONSOLEREADER_H#define CONSOLEREADER_H#include <QThread>class ConsoleReader : public QThread{ Q_OBJECTsignals: void KeyPressed(char ch);public: ConsoleReader(); ~ConsoleReader(); void run();};#endif .原创 2022-05-31 09:40:57 · 404 阅读 · 0 评论 -
Qt QtConcurrent之 Run 函数用法
概述Concurrent是并发的意思,QtConcurrent是一个命名空间,提供了一些高级的 API,使得在编写多线程的时候,无需使用低级线程原语,如读写锁,等待条件或信号。使用QtConcurrent编写的程序会根据可用的处理器内核数自动调整使用的线程数。这意味着今后编写的应用程序将在未来部署在多核系统上时继续扩展。而这里要讲的是QtConcurrent::run函数的用法。函数原型如下:QFuture<T> QtConcurrent::run(Function funct原创 2021-03-17 14:50:56 · 2310 阅读 · 0 评论 -
Qt中解决:error C1083:无法打开源文件:“GeneratedFiles\Debug\moc_xxx.cpp”:No such file or directory
解决方法:打开工程文件.project删除与moc_xxxx.cpp、xxx.h、xxx.cpp文件在重新添加xxx.h和xxx.cpp文件到工程中。原创 2021-03-10 17:52:13 · 2234 阅读 · 0 评论 -
Qt学习--Qt Plugin创建及调用3(接口间通信)
Qt Plugin创建及调用3(接口间通信)简述插件接口(Interface)的作用,就是提供一个与其他系统交互的方法。其他系统无需(也无法)了解内部的具体细节,只能通过对外提供的接口来与进行通信。在上一篇的PluginInterface接口中,我们定义了两个纯虚函数virtual void setInitData(QStringList &strlist) = 0;virtual void getResultData(QStringList &strlist) = 0;原创 2020-09-30 14:14:26 · 1470 阅读 · 1 评论 -
Qt学习--Qt Plugin创建及调用2(插件管理器)
Qt Plugin创建及调用2–插件管理器简述Qt 本身提供了插件相关的技术,但并没有提供一个通用的插件框架!倘若要开发一个较大的 GUI 应用程序,并希望使其可扩展,那么拥有这样一个插件框架无疑会带来很大的好处。插件系统构成插件系统,可以分为三部分:主系统 通过插件管理器加载插件,并创建插件对象。一旦插件对象被创建,主系统就会获得相应的指针/引用,它可以像任何其他对象一样使用。 插件管理器 用于管理插件的生命周期,并将其暴露给主系统。它负责查找并加载插件,初始化它们,并且能够进行原创 2020-09-30 14:12:45 · 1233 阅读 · 0 评论 -
QT插件学习系列(一) 初识QtPlugin
QT插件学习系列(一) 初识QtPlugin1、 概述为什么我们要学习插件化,其和 windows 导出 dll 有什么区别呢?导出的动态库如果缺失,程序不能运行。但插件可以。 同一套代码,即可分别在 windows 下和 linux 下生成插件。QT 本身提供两种插件支持,一种称为高级 API,一种称为低级 API。高级API的作用是扩展 QT 程序本身,需要子类化 QT 提供的插件基类,例如现有的 QTSqlDriver,因此你可也以编写自己的 QTStyle 扩展 QT。 低级原创 2020-09-30 14:10:33 · 2643 阅读 · 1 评论 -
Qt之QMetaObject::invokeMethod()使用简介
概述Qt元对象系统是Qt最核心的一个基础特性,元对象系统负责信号和插槽对象间通信机制、运行时类型信息和Qt属性系统。为应用程序中使用的每个QObject子类创建一个QMetaObject实例,此实例存储QObject子类的所有元信息。通过元对象系统,你可以查询QObject的某个派生类的类名、有哪些信号、槽、属性、可调用方法等信息,然后可以使用QMetaObject::invokeMethod()调用QObject的某个注册到元对象系统中的方法。而这里,主要就介绍改函数的使用方法,以及大致简介。QM原创 2020-09-16 11:16:25 · 1847 阅读 · 0 评论 -
Qt线程之QRunnable的使用详解
概述说到线程通常会想到QThread,但其实Qt中创建线程的方式有多种,这里主要介绍其中一种QRunnable,QRunnable和QThread用法有些不同,并且使用场景也有区别。接下来就来看看QRunnable的用法、使用场景以及注意事项。用法要使用QRunnable创建线程,步骤如下:继承QRunnable。和QThread使用一样, 首先需要将你的线程类继承于QRunnable。 重写run函数。还是和QThread一样,需要重写run函数,run是一个纯虚函数,必须重写。 使用原创 2020-09-15 20:34:43 · 2421 阅读 · 2 评论 -
菜单栏QAction+ QstackedWidget堆栈窗体实现切换分页
QstackedWidget 堆栈窗体,具体不作详述,stackedWidget 主要实现效果类似与界面分页效果,主要常与QListWidget QtreeWidget QTableWidget等结合使用,这里主要讲使用菜单栏QAction,上面三种网上都有很多例子。使用QstackedWidget连接信号槽代码段如下QObject::connect(MainWindow,SIGNAL(tt(int)),stackedWidget,SLOT(setCurrentIndex(int)));//Mai原创 2020-09-12 18:08:28 · 457 阅读 · 0 评论 -
Qt5 双滑块支持float变化的控件,以及单滑块float控件
最近做到一个项目,需要设置一个参数的上下限,最开始考虑的办法是用QSlider控件来实现,发现有两个不太合适的地方。一个参数需要用两个控件来设置,而且两者之间还有大小关系的限制,比较麻烦; QSlider只支持int类型的输入与改变。因此,决定自己写一个,本着资源共享的精神,特将代码贴出,供大家参考,如有更好的想法,也欢迎指正与交流。双滑块的代码#ifndef DOUBLESLIDER_H#define DOUBLESLIDER_H#include class DoubleSli原创 2020-09-11 22:19:07 · 398 阅读 · 0 评论 -
Qt 智能指针学习
从内存泄露开始?很简单的入门程序,应该比较熟悉吧 ^_^#include <QApplication>#include <QLabel>int main(int argc, char *argv[]){ QApplication app(argc, argv); QLabel *label = new QLabel("Hello Dbzhang800!"); label->show(); return app.exec()...原创 2020-07-28 21:42:10 · 305 阅读 · 0 评论 -
Qt使用多核(jom)加快编译速度
Qt Creator在WINDOWS下默认是使用mingw32-make.exe作为编译器的,这是一个移植版本的GCC,只支持单核,速度很慢。其实QT是有提供多核编译器的,叫jom。(1)首先先确认自己的QT版本中是否有JOM,路径为Qt\Qt5.8.0\Tools\QtCreator\bin\jom.exe。这是我电脑中的QT版本:奇怪的是在5.2;5.3;5.4中均有jom.exe,但QT5.8中竟然没有。那么自己去下载一个好了。连接http://wiki.qt.io/Jom。.原创 2020-07-19 19:34:20 · 3590 阅读 · 0 评论 -
Qt Creator在Windows上的调试器安装与配置
如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试器是CDB(对应MinGW的Qt使用GDB调试器)。本文介绍如何下载安装CDB,并在Qt Creator配置之。示例环境:Windows 8 x86 + Visual Studio 2012 + Qt 5.2.0选择合适的Windows Driver Kit(WDK)CDB已经不再作为独立软件包,而是WDK中的一部分。虽然WDK是对应不同的Windo.原创 2020-07-19 19:16:04 · 960 阅读 · 0 评论 -
QT之QSignalMapper
QT之QSignalMapper(可以理解为转发器,多个按钮绑定到一个Edit上,且能分辨。每个单独连接的话,反而麻烦)简述QSignalMapper我们可以理解为转发器,此话怎讲呢?比如,按钮点击的响应槽,绑定到QSignalMapper上,QSignalMapper收到按钮的点击后,又通知到另外的控件上做处理。有的朋友会问了,为什么要这么麻烦,需要转一手,不能去掉中间的QSignal...转载 2020-03-20 16:46:43 · 493 阅读 · 0 评论 -
qt 信号阻塞 和 断开信号槽
Qt程序中有时候不希望信号槽的触发,在某段流程结束之后,又需要继续回复信号槽状态,这时候可以用阻塞或者断开信号槽的方法来处理。1. 阻塞方法:boolQObject::blockSignals(boolblock)qt描述:阻塞模式下,这个对象发送的信号都会被阻塞,解除阻塞后则不再阻塞。返回值为之前状态的阻塞情况。Ifblockis true, signals emitt...原创 2020-03-20 16:02:38 · 694 阅读 · 0 评论 -
QT5.7.0vs2013+ VS2013升级到Qt5.7.1vs2015+VS2015
第一、打开.vcxproj工程文件例如将文件改为第二、转换工程文件1、转换工程文件为Convert Project to QMake Generated Project2、转换工程文件为Convert Project to Qt VS Tools Project第三、打开工程文件1、修改正确属性路径。由于版本升级所造成工程配置路径错误。第四,...原创 2019-11-19 09:16:48 · 742 阅读 · 1 评论 -
Qt笔记(二)
error MSB6006: “cmd.exe”已退出,代码为 3。这两天调程序遇到一个奇怪的问题。C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(171,5): error MSB6006 cmd.exe 已退出,代码为3。百思不得解,看过了很多方法,都不奏效,无意中看到Sta...原创 2019-11-15 14:27:32 · 412 阅读 · 0 评论 -
QSettings 与中文(反斜杠 转义)
QSettings 与中文本文介绍的是QSettings的 IniFormat 截止目前(Qt4.7)对中文的支持情况,如果你想实现自己定义格式(比如"[中文] 中文=中文"这样),可参看QSettings 自定义格式Qt4.4(包含)之前先看个例子:#include <QtCore/QCoreApplication>#include <QtCore/QSetti...原创 2019-10-25 15:12:08 · 1563 阅读 · 0 评论 -
TCP、UDP数据包大小的限制
1、概述首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应用层 它们的关系是 数据帧{IP包{TCP或UDP包{Data}}} 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),...转载 2019-10-25 10:55:29 · 439 阅读 · 0 评论 -
Qt通过UDP传图片,实现自定义分包和组包
一.包头结构体//包头struct PackageHeader{ //包头大小(sizeof(PackageHeader)) unsigned int uTransPackageHdrSize; //当前包头的大小(sizeof(PackageHeader)+当前数据包长度) unsigned int uTransPackageSize; //数据...转载 2019-10-25 10:51:56 · 973 阅读 · 0 评论 -
QTextCodec中的setCodecForTr等终于消失了 (Qt5)
在Qt4中,国内很多新手都喜欢——不分青红皂白地使用如下3行代码QTextCodec::setCodecForTr(...)QTextCodec::setCodecForCStrings(...)QTextCodec::setCodecForLocale(...)尽管之前零零散散写过一点这方面的内容,比如QString 与中文问题Qt中trans原创 2017-08-18 10:11:10 · 834 阅读 · 0 评论 -
QT笔记(一)
Qt下载:download.qt.iomingw 的gcc 版本可在命令行中终端编译Qt工程///////////////////////////////////////////////////////////////////////////////////////////////Ctrl + H水平布局...原创 2017-06-04 16:25:53 · 696 阅读 · 0 评论 -
Qt Creator编译出错:‘cl’不是内部或外部命令
在安装有vs2010的Win7系统下安装qt-opensource-windows-x86-msvc2010-5.5.1.exe,完成后打开Qt Creator,利用其向导新建一个Qt Application,构建时提示错误:‘cl’不是内部或外部命令查看Qt Creator的工具->选项->构建和运行, 构建套件(Kit) Qt Version 编译器 配置都转载 2017-02-23 20:13:36 · 2876 阅读 · 1 评论 -
QT webkit 各个类之间关系--QWebView-QWebPage
一、QT webkit简介1.QtQt(发音同 cute)是一个跨平台的C++应用程式开发框架,有时又被称为C++部件工具箱。Qt被用在KDE桌面环境、Opera、Google Earth、Skype、Adobe Photoshop Album和VirtualBox的开发中。它是挪威Qt Software 的产品,2008年6月17日被芬兰的诺基亚(Nokia)公司收购原创 2017-01-18 11:51:45 · 1054 阅读 · 0 评论 -
Qt Creator 中使用svn进行版本管理
最近做的一个项目是用Qt Creator做的。开发环境在windows7 下。公司有台linux的服务器,上面装了SVN。昨天项目经理要求我把自己的代码上传到那台linux服务器上。没办法,去网上找了好多资料。都没有看到有这方面的文章。那就自己动手研究吧! 刚开始的时候。一点头绪都没有,不知道如何才能将自己电脑里的代码上传到服务器上去。后面想了一个偷懒的办法。先将代码用FileZ原创 2017-02-06 11:51:59 · 2911 阅读 · 0 评论 -
Qt中的字符串类QString
Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char*类型在Qt下怎样将QString转char*呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。因为char*最后原创 2015-11-14 17:51:01 · 7306 阅读 · 0 评论 -
用Qt Creator编写代码+ vs2010编译调试的配置
1.我在的系统是win7 64位的操作系统 2G内存2.已安装了vs2010旗舰版3.顺序安装 后面的是我的安装路径 1. qt-win-opensource-4.8.2-vs2010.exe E:\work\QT482_Creator250_add1_1_11\qt4.8.2 //注意不是源码。原创 2015-10-20 20:51:45 · 2990 阅读 · 0 评论 -
Windows QT环境搭建流程
Windows QT环境搭建流程(QT4.8.6 + QT Creator + MInGW) 1、先安装IDE编译环境qt-creator-opensource-windows-x86-3.1.1.exe。请使用默认路径C:\Qt\qtcreator-3.1.1。2、解压缩MinGW编译器工具i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z。原创 2017-08-18 10:11:47 · 629 阅读 · 0 评论 -
qt中文乱码问题
首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString。很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码。而问题一般都出在很多用户对自己当前的编码没太多概念,于是一转载 2017-08-18 10:56:21 · 359 阅读 · 0 评论 -
Qt 5.7 版本+2013VS环境配置
原本是使用MSVC5.5.1的版本,碍于习惯,之前一直使用creator,后面才转向VS,因为它的调试实在是太棒了,小程序还是creator调试(比如抽出大程序中的小模块之类的)不知道是版本问题还是我自己笔记本问题,5.5.1这个在添加的资源中使用图片一直路径失败,4.6又能成功调用到资源,在VS中也可以,然后手残卸载了MSVC5.5.1,同理,原本配置好在2013VS中Qt也随之毁了。接原创 2017-10-10 14:37:31 · 965 阅读 · 0 评论 -
Qt - QDialog,QWidget实现模态及非模态
对于 QDialog 的模态及非模态是直接可以实现的,很多课本中都会提到,此处总结下。模态QDialog 方式一: QDialog dlg(this); dlg.exec();方式二: QDialog *pDlg=new QDialog(this); pDlg->setModal(true); pDlg->show();非模态QDialog QDialog *pDlg=new QDialog转载 2017-12-08 23:23:17 · 1638 阅读 · 0 评论 -
QDockWidget嵌套布局详解-实现Visual Studio布局
概述许多工程软件,如Qt Creator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口。Qt的嵌套布局由QDockWidget完成,用Qt Creator拖界面得到的dock布置形式比较固定,不能得想要的任意组合形式,要得到如下图所示的效果,后续布局必须通过代码来完成。ps:这是自己没事写的一个数据可视化软件下面说说如何实现完全自由的界面布局效果:Q...原创 2018-02-28 17:31:26 · 739 阅读 · 1 评论 -
qt setData()和data()
简述在GUI开发中,往往需要在界面中存储一些有用的数据,这些数据可以来自配置文件、注册表、数据库、或者是Server。无论来自哪里,这些数据对于用户来说都是至关重要的,它们在交互过程中大部分都会被用到,例如:单击一个用户头像,显示该用户的详细信息(等级、昵称、姓名、个人说明)。常见接口Qt中,可以通过绝大部分已有的接口来存数数据、获取数据。例如:存储数据setData()setItemData()...转载 2018-02-28 21:50:53 · 11033 阅读 · 0 评论 -
如何获得 Qt窗口部件在主窗口中的位置--确定鼠标是否在某一控件上与在控件上的位置
用Qt Creator 设计程序时,最方便的就是ui设计器,可以很容易的得到想要的布局。 但是这样自动布局带来的后果是很难知道窗口中某一部件在主窗口中的相对位置。 在处理子窗口鼠标事件时变的很麻烦。主窗口有菜单、工具条等,想用鼠标绘图,把鼠标轨迹映射到窗口部件上,这些问题。 其实最主要的是获得窗口部件的起始点相对主窗口的位置。 例如:在主窗口拖入一个QScrollArea 在其上放一个QLabe...转载 2018-04-09 21:22:18 · 1833 阅读 · 0 评论 -
VS2013调试可执行程序.exe
项目出现了匪夷所思的问题,用IDE调试/运行程序没有任何问题,直接运行可执行程序exe出现了问题。于是采用如下方式调试exe原创 2018-04-10 14:29:56 · 5789 阅读 · 0 评论 -
QSettings 读写注册表、配置文件
简述一般情况下,我们在开发软件过程中,都会缓存一些信息到本地,可以使用轻量级数据库sqlite,也可以操作注册表、读写配置文件。关于QSettings的使用前面已经介绍过了,比较详细,见“更多参考”,下面介绍下QSettings常用功能-读写注册表、配置文件。优点无需指定注册表路径一般情况下,我们需要定义一个宏,或者常量字符串来指定保存的注册表位置。#define HKEY...转载 2018-09-17 17:34:41 · 609 阅读 · 0 评论 -
使用QLibrary加载动态库
使用QLibrary可以在程序运行时加载动态链接库。一个QLibrary的实例作用于一个单一的共享库上。QLibrary提供了一种平台无关的方式访问库中的函数。可以在构建QLibrary的实例时将要加载的库文件传入,也可以在创建实例后使用setFileName()显式的设置要加载的文件名。当加载库文件时,QLibrary会搜索所有平台特定的库位置,除非传入的文件名具有绝对路径。如果传入的文件名...原创 2019-08-20 14:13:50 · 445 阅读 · 0 评论