Qt
文章平均质量分 54
阿拉灯神ding
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在qmake中定义子项目的编译顺序(依赖关系)
背景当一个大项目中包含多个子项目时,往往子项目之间有依赖关系,这时需要在pro文件中指明子项目的编译顺序,否则编译整个项目的时候可能会失败。实现现有项目一名称为Porject1,包含三个子项目分别为SubProject1、SubProject2、SubProject3。依赖关系如下:SubProject2 ----> SubProject1SubProject3 ----> SubProject2//子项目2依赖子项目1,子项目3依赖子项目2 所以编译顺序依次为子项目1、子项目原创 2021-12-11 15:26:57 · 2214 阅读 · 0 评论 -
Qt判断文件类型 QMimeType
前言通常来说我们判断一个文件的类型是根据后缀名称来的,例如:.txt是文本文件 .exe是二进制文件可执行程序。在程序中需要预设后缀名称,有些时候不太容易把属于某类文件的后缀名写全。比如说图片类型的文件,后缀名可以是.jpg .bmp .png等,甚至有些可能我们没接触过,但也属于图片文件,这个时候 QMimeType就派上用场了,它可以识别文件或者给定数据的类型。使用方法QMimeType要配合QMimeDatabase来使用,下面的代码实现了判断文本类型文件,使用了inherits来判断是因为,M原创 2021-09-15 13:54:35 · 2963 阅读 · 1 评论 -
QFormLayout布局该什么时候使用
概述QFormLayout是一种支持两列的格子布局方式,左列是标签,右列是窗口部件。可以方便且快速的实现标签和输入组件的组合,如下图。示例像上面的例子,使用QGridLayout(栅格布局)也是可以实现的,但是远没有使用QFormLayout方便,对比如下:使用QGridLayout需要编写下面的代码 nameLabel = new QLabel(tr("&Name:")); nameLabel->setBuddy(nameLineEdit); emailLabel =原创 2021-09-04 11:06:35 · 271 阅读 · 0 评论 -
如何在Qt中使用zlib
前言环境:qt5.9.9 、 zlib1.2.1、 windows10、QtCreator4.11.0本文介绍了在Qt中使用zlib的方式。使用的场景是在上位机软件中使用解压缩功能。点击此处下载本文完整的示例代码。问题比较麻烦的事情在于,截至目前最新的zlib支持到使用vs2015进行编译,而已有的上位机软件是使用minGW编译的,使用vs编译的dll库没办法在minGW中使用。现在摆在面前有两条路,一种是把上位机软件使用msvc重新编译,然后再使用vs2015编译的zlib库。另一种使用m原创 2021-08-19 15:53:09 · 6330 阅读 · 2 评论 -
解决windeployqt打包QML程序无法启动的问题
windeployqt.exe是qt自带的打包工具,在打包qml程序时需要带上–qmldir参数,指定qml导入符号的路径,否则会出现无法启动的问题。windeployqt xxx.exe --qmldir=D:\Qt\Qt5.9.9\5.9.9\mingw53_32\qml–qmldir后边的路径在qt的安装目录对应的编译器目录下名称为qml的目录。这里我构建程序使用的是mingw53_32所以打包的时候也要选择这个。...原创 2021-08-04 13:48:05 · 1703 阅读 · 4 评论 -
解决QMYSQL driver not loaded问题
前言操作环境windows server2012+vs2010+qt4.8.7使用QtSqlDatabase时出现如下的提示,代表当前使用的QSqlDatabase没有mysql的驱动。解决办法有两种,一种是网上下载别人编译好的库文件,放到指定的目录下;另一种是自己编译mysql的插件。如何编译mysql插件一、编译准备需要如下两部分文件:qt源代码(安装qt的时候选择了安装源代码选项那么在qt的安装路径下就会有)mysql的库文件及头文件(同样也是安装mysql时选装的),如果未安装可以原创 2021-07-22 17:40:55 · 1202 阅读 · 0 评论 -
Qt动态更改界面语言(在运行状态下改变界面语言)
本文使用的Qt版本为5.9.9概述通常来说翻译文件都是在页面创建之前加载的,但也可以在不重启程序的情况下更改界面的语言。具体实现步骤如下:将翻译文件的加载放在槽函数中进行,通过事件触发来改变。在更改了翻译文件后,需要将程序中所有用户可见的字符串重新设置一遍。实例下面以实例来进行说明,界面如下,通过按钮来切换语言。我们需要准备一个翻译文件,将英文页面翻译为中文。完整的实例可以点击此处下载。在按钮的槽函数中使用qApp->installTranslator来加载翻译文件,使用qApp-原创 2021-07-14 14:22:21 · 3448 阅读 · 3 评论 -
Qt实现关闭主/父窗口后同时关闭其他窗口的方法&&事件过滤器(eventFilter)的使用
实现的方式是使用Qt的事件过滤器,捕捉到主窗口关闭事件,调用系统退出函数(quit())停止程序运行。使用事件过滤器的步骤如下:1. 在需要用到的类中实现下面的函数。bool QObject::eventFilter(QObject *watched, QEvent *event)watched表示被监控的对象,event中存储了本次发生的事件。2. 在被监控的对象上调用installfilter函数注册过滤器#monitorObj为被监控的对象,filterObj是实现了过..原创 2021-07-01 14:15:39 · 3142 阅读 · 0 评论 -
Qt样式表的使用setStyleSheet
样式表的示例如下面这段代码,这里是指定了QWidget类的背景颜色、字体大小和名称、前景色。这个样式表会应用的QWidget类以及其子类。QWidget{ background-color: rgb(255,255,0); color: rgb(255,0,0); font: 12pt "宋体";}样式表的语法样式法则由一个选择器(selector)和一些声明(declaration)组成,上例中,QWidget就是选择器,表明后面花括号中的样式声明应用于QWid原创 2021-06-30 17:32:14 · 7667 阅读 · 0 评论 -
使用QT5创建动态库以及如何在程序运行时加载动态库
本文介绍了如何使用QT5创建动态库,以及如何在程序运行时加载动态库。这种方式类似于Qt的应用程序插件机制,插件的方式可以直接获取动态库中类的实例,而此方式只能到函数级,从库中获取函数的地址并转换为对应的函数指针来执行。下面以实例进行介绍:创建动态库新建库项目,pro文件如下:QT += widgetsTEMPLATE = lib #输出为动态库CONFIG += c++11DEFINES += QT_DEPRECATED_WARNINGSTARGET= mpluginSOURCES原创 2021-04-21 15:10:49 · 1926 阅读 · 0 评论 -
Qt5应用程序动态插件的使用 单独模块制作成插件/动态连接集成到主程序
QT5应用程序动态插件的使用1 概要在软件开发中可以将某些独立的功能模块作为插件(编译为库文件)来使用。这样做的插件就可以单独发布和升级而不需要修改主程序。原理上是使用了C++的多态和QT元对象系统。插件功能的使用要分为主程序和插件程序两个部分。下面进行详细的介绍。制作可扩展(可调用插件)的主程序,步骤如下:定义一些列的操作接口(即抽象类,只有纯虚函数),用于插件内部方法的调用。 使用Q_DECLARE_INTERFACE()宏将步骤1定义的接口进行声明,注册到QT的元对象系统中。 在调原创 2021-04-21 11:54:13 · 638 阅读 · 0 评论 -
Qt实现tftp客户端
分享一个之前用qt实现的tftp客户端,希望能给有需要的同学一些帮助。源代码文件各自内容如下:mythread.cpp:实现tftp的主逻辑。 widget.cpp:实现操作页面。运行界面如下,支持put和get功能。下面列出所有的代码片段和项目配置文件。mythread.h#ifndef MYTHREAD_H#define MYTHREAD_H#include <QThread>#include <QtNetwork>#include <原创 2021-03-29 21:38:38 · 3393 阅读 · 13 评论 -
qmake的pro文件各类赋值操作的含义=,+=,*=,~=,-=
"="运算符为一个变量赋值:TARGET = my_app#上面的行将TARGET变量设置为my_app。此操作会覆盖之前TARGET的值。"+="运算符将一个新值附加到变量中的值列表中:DEFINES += USE_MY_STUFF#上面的行将USE_MY_STUFF追加到预处理器定义列表(即DEFINES)中,不会覆盖之前的值。"-="操作符从一个变量中的值列表中删除一个值:DEFINES -= USE_MY_STUFF#上面的行从预处理器定义列表(即DEFINES)原创 2021-03-28 20:55:22 · 873 阅读 · 1 评论 -
Qt官方boxes例程编译报错This example requires Qt to be configured with -opengl desktop
转自:https://www.bilibili.com/read/cv5978520将boxes.pro文件中的qtConfig一行注释掉#qtConfig(opengles.|angle|dynamicgl): error("This example requires Qt to be configured with -opengl desktop")然后在libs中使用加入-lopenglLIBS += -lopengl完整的pro文件如下,修改完毕后,执行qmake,然后编译即转载 2021-03-23 11:01:00 · 1451 阅读 · 7 评论 -
Qt多语言界面设计
用QT开发多语言界面应用程序,主要包括以下几个步骤:在程序设计阶段,程序代码中每一个用户可见的字符串都要用tr()函数封装,以便Qt提取界面字符串用于生成翻译资源文件。用UT设计器可视化设计窗体时同一用一种语言,如汉语。 在项目配置文件(.pro文件)中设置需要导出的翻译文件(.ts文件)名称,使用lupdate工具扫描项目文件中需要翻译的字符串,并生成翻译文件。 使用Qt的Linguist程序打开生成的翻译文件,将程序中的字符串翻译为需要的语言,如将所有中文字符串翻译为英文。 使用lreleas原创 2021-03-22 11:31:10 · 813 阅读 · 0 评论 -
Qt创建线程两种方式的区别
使用QT创建线程有两种方式,方式A使用moveToThread,方式B是直接继承QThread。差异主要在于方式A的槽函数将会在新线程中运行,而方式B的槽函数在旧线程中运行。结论如下:PS:旧线程在这里指主线程,而新线程指QThread创建出的线程。相同点:构造函数都是在旧线程中执行的 在QThread对象上直接调用的方法将在调用该方法的线程中执行 QThread实例驻留在实例化它的旧线程中不同点:方式A的槽函数将会在新线程中运行,而方式B的槽函数在旧线程中运行综上:使用方式B是原创 2021-03-20 16:28:46 · 1690 阅读 · 1 评论
分享