![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Qt
肩上风骋
日积月累,熟能生巧。
展开
-
Qt创建列表,通过外部按钮控制列表的选中下移、上移以及左侧图标的显现
项目中需要使用列表QListWidget,但是不能直接拿来使用。需要创建一个列表,通过向上和向下的按钮来向上或者向下移动选中列表项,当当前项背选中再去点击确认按钮,会在列表项的前面出现一个图标。原创 2024-07-17 18:05:45 · 677 阅读 · 0 评论 -
Qt实现手动切换多种布局
一个手动切换多个布局的程序,点击不同的布局对应的按钮展示不同的窗口布局。原创 2024-07-01 11:17:35 · 542 阅读 · 2 评论 -
记录使用Qt的http示例代码时出现的:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
下载对应版本的openssl库来用,发现官网上没有提供openssl1.1.1g对应的库,只可以找到对应版本的源码。下载OpenSSL 1.1.1g的源码到本地,想自己编译生成动态库的可以看文章末尾的参考文章。若是自己编译源码来生成动态库,按照本文末尾的参考文章所提供的生成对应平台的动态库编译过程中,若是执行过程中出现一些错误,也可以试图继续按步骤向下执行,最后去源码所在的目录下查找是否生成了动态库。如果嫌弃麻烦,不想自己编译,那么文章开头提供的编译生成的动态库,可以直接下载之后使用。原创 2024-04-29 17:13:10 · 707 阅读 · 0 评论 -
qt实现不定数量的按钮向前向后移动展示
在窗口中加入多个按钮,点击两边的翻页按钮,实现按钮的移动,或者说是翻页。其中按钮总数可以配置,窗口需要显示的按钮数也可配置。原创 2024-04-22 15:49:43 · 814 阅读 · 1 评论 -
配置QtCreator能加载自定义插件的环境
生成的自定义插件能在QtCreator的设计器中加载,需要满足当前使用的QtCreator的编译时所需的Qt库和编译器。本文旨在如何配置环境使其满足能在QtCreator的设计器中加载插件。原创 2024-04-12 12:00:33 · 676 阅读 · 0 评论 -
用于扩展Qt自身的插件(下)
QtCreator的设计器中加载自定义的插件。原创 2024-04-12 11:12:08 · 1246 阅读 · 1 评论 -
用于扩展Qt本身的插件(上)
默认是选择包含项目的,需手动勾选创建代码框架,会生成对应的下图中所示的系列文件名,此时可在图标文件项点击后面的浏览按钮选择自己要添加的图标图片。后面的步骤就不用说了,项目名为StyleWindow,路径采用默认的就行,基类为QWidget,采用默认声的Widget就行,不要勾选ui,该项目不用ui界面,一路操作,直到完成。2. 扩展Qt自身,同时需要在QtCreator的设计器中加载,类似于自定义控件,可像Qt的基本控件那般在设计器中直接展示,拖拽使用,具有属性,信号槽等。之后点击下一步按钮。原创 2024-04-11 17:40:52 · 997 阅读 · 0 评论 -
Qt创建基于应用程序的插件
插件是一种用于应用程序功能扩展和增强,且按照特定规范编写的应用程序接口的程序。原创 2024-04-11 11:41:00 · 1241 阅读 · 0 评论 -
麒麟系统下安装qt5.9.1后不能输入中文
在虚拟机上安装麒麟系统后,安装了qt5.9.1,只能输入英文和数字不能输入中文注释,编译的程序也不能输入中文。原创 2024-04-08 18:42:16 · 1525 阅读 · 0 评论 -
qt自定义窗口在拖动过程中出现抖动且拖动后位置看上去不对
将之前使用position()获取坐标位置的地方改为globalPos(),且将之前QPointF类型的变量 m_pressPos与m_topLeftPos改为QPoint 类型。于是即使上述的globalPos()可以解决原来的窗口拖动时的抖动和窗口不能及时跟随鼠标移动问题,但还是使用globalPosition()来实现一下看看吧。经实践所知,使用pos()与position()获得的鼠标位置,在窗口拖动中都出现抖动或者窗口不能及时跟随鼠标移动的现象。Qt6让使用position()代替pos()。原创 2024-04-07 16:48:50 · 1067 阅读 · 0 评论 -
qt样式表使用中的坑
都是针对控件m_Context的样式设置,后面的样式设置覆盖了前面的样式设置。若是对于单个控件的样式改变,使用this->setStyleSheet(this->styleSheet() +strStyle),设置的样式都不会生效。下面是部分实现的代码。其中主要涉及前期设置样式后,后期通过调用一些可以更改样式的对外接口来更改原有的样式,设置为新的样式的代码。对比代码中想要实现的效果,左上角半径为0,右上角半径为5,左下角半径为5,左下角半径为20,标题栏背景色为红色,文本窗背景色为灰色,达到了想要的效果。原创 2024-03-28 16:05:51 · 806 阅读 · 0 评论 -
qt绘制生成PDF文件
之前做项目的时候,需要自己生成一个pdf文件,好久之前保存的草稿,今天就把它发表一下吧,留着自己以后有需要的时候在来查阅。原创 2024-01-16 15:30:30 · 1175 阅读 · 1 评论 -
C++实现两个字符串交替组合成一个字符串
这道题来自力扣,给出两个字符串,将两个字符串交替着组合成一个字符串。原创 2023-07-06 17:09:30 · 700 阅读 · 0 评论 -
浅谈QApplication的事件循环机制
本文仅浅浅的介绍些许QApplication相关的事件循环。原创 2023-02-07 20:23:30 · 1055 阅读 · 1 评论 -
QString中文字符串中指定字符的查找
中文字符串中查找指定的中文字符串,根据返回位置判断前面的字符串是否为指定字符串。原创 2022-12-19 19:09:24 · 4397 阅读 · 0 评论 -
qt中QDoubleSPinBox设置其指定的样式及带单位
本文旨在记录使QDoubleSpinBox呈现出行编辑器QLineEdit的效果,又不使其失去鼠标选中当前的QDoubleSpinBox后滚轮滚动增加减少其值的特性。原创 2022-11-29 19:05:00 · 2380 阅读 · 0 评论 -
验证布局中控件的父窗口
平时在创建一个窗口类的子空间时,一般需要先创建布局,将子控件添加到窗口的布局中。子控件没有显示的指定父窗口时,那么这个布局中的控件的父窗口是布局还是这个窗口类呢。原创 2022-11-20 14:54:03 · 195 阅读 · 0 评论 -
信号槽绑定时出现未有匹配的connect()函数
信号槽在使用的过程中,出现没有找到匹配的connect()函数,在检查参数无误后,可能出现的原因便是,信号的重载,为此需要指定绑定的是那种参数的信号。例如在spinbox的使用时,对于信号valueChanged()有两个重载函数,绑定时没有指出绑定的是哪一个信号,就会出现找不到匹配的connect()函数。解决方法有两种:采用SIGNAL()和SLOT()宏来绑定信号槽,这样可以指出具体的函数,因为含有形参类型;采用函数指针指向具体函数,进而connect()绑定。关键代码如下所示: void原创 2020-09-28 17:26:04 · 2389 阅读 · 0 评论 -
qt中实现多语言功能
QT是实现多语言。原创 2022-10-18 21:56:18 · 2971 阅读 · 0 评论 -
Qt中QPushButton设置按钮的文本位置
按钮文本位置设置无效。原创 2022-10-18 18:33:06 · 3498 阅读 · 0 评论 -
vs2017安装qt插件及安装qt插件后的设置
vs2017安装qt插件。原创 2022-10-16 15:24:57 · 8214 阅读 · 5 评论 -
qt下QString转换为const char*字符串
概述本文直在说明将QString类型的变量转换为const char *类型。实现可以采用下面的方式来实现:QString.toStdString().c_str();示例下面是一个示例:const QString msg = "nis你好!";const char * str = msg.toStdString().c_str();备注上面只是百分之百的说明const QString可以转换为const char *类型,但是若是QString能不能转换为const char *类型原创 2022-04-14 10:29:39 · 6151 阅读 · 3 评论 -
qt实现QLabel上显示的文字有描边
qt实现文字描边效果图开发环境项目示例综述效果图此程序运行的效果。开发环境1.关于我的开发环境,我目前有点迷惑,我的QtCreator中帮助-》关于QtCreator,得到如下所示:但是我的安装包上却写着5.12.9我的理解就是qt版本是5.12.9,但是QtCreator是基于Qt5.14.2的。不知道如此理解对否。关于我的开发环境,我就是在上述QtCreator4.12.2上做的开发,且为debug模式下运行的程序,创建的项目是以QDialog为基类的应用程序。2.项目的结构如下图所原创 2022-03-31 16:30:49 · 2578 阅读 · 0 评论 -
mvc设计模式的简单领悟
引言mvc设计模式,是将数据模型与视图分离,通过控制器来建立起数据模型与视图之间的联系,当数据模型变化自动更新视图。其中M-数据模型,V-视图,C-控制器。下面是一个简单的对于MVC设计模式的使用。示例开发环境是QtCreator6.0.2。创建控制台输出程序,设置项目的运行环境为run in terminal.程序启动的时候可以开启终端,对应的程序的运行结果,在终端查看。下面是实现代码。main.cpp#include <QCoreApplication>#include <原创 2022-02-16 11:28:16 · 376 阅读 · 0 评论 -
QtCreator下使用c++标准输入cin输出cout没有阻塞等待输入
引言在QtCreator中编写c++程序,其中需要从控制台输入,就用了c++的cout和cin,本应该等待控制台输入文本,但是却没有。下面是具体的案例。案例本文基于QtCreator创建的qt控制台输出程序,创建时选择如下图所示的选项,创建控制台输出应用程序。其中main.cpp文件中的代码如下,其它采用创建项目时自动生成的代码,未做修改。main.cpp#include <QCoreApplication>#include <iostream>#include &原创 2022-02-15 11:46:17 · 2927 阅读 · 2 评论 -
编程实现找出一串字符串中的数字最大的值
编程实现字符串中数字值最大的值。如“hdf34gdf233kslds982lpow892ssfs”中最大值为982.原创 2022-02-14 17:31:59 · 29 阅读 · 0 评论 -
Mac下使用macdeployqt打包qt程序:
概述初次在Mac上使用qt的macdeployqt来打包生成的可执行程序,这里记录下。由于我的程序是调用之前生成的qt动态库,而动态库又依赖于第三方库,相对于没有库文件依赖的程序,这里有一些需要注意的点,下面是打包的步骤。打包步骤使用macdeployqt打包qt程序:1.项目设置为release模式,编译并运行生成release下的可执行程序;2.将1中生成的可执行程序,存入一个空的文件夹下;3.在终端zsh中进入到qt安装目录下,找到macdeployqt,并cd到macdeployqt所在原创 2022-02-08 18:43:23 · 4985 阅读 · 0 评论 -
mac上用qt调用自己生成的qt动态库,该动态库又依赖第三方库
qt下依赖于第三方库生成的动态库的调用概述基于声网的sdk如何在自己的动态库中使用使用基于第三方库的动态库下面看pro文件中的设置概述初次使用mac上的qtCreator生成动态库,该动态库编写时调用了第三方库,基于生成的该动态库,编写测试程序来使用改动态库。第三方库为声网所提供的sdk,基于声网sdk实现自己的功能,并封装成动态库。基于声网的sdk如何在自己的动态库中使用此时针对于声网sdk封装自己的动态库,先从声网下载mac平台下的sdk和windows平台下的sdk,解压后将需要的库文件和头文原创 2022-01-24 19:02:15 · 2703 阅读 · 3 评论 -
qt中十进制转换为十六进制和二进制字符串,以及二进制字符串转十进制,十六进制字符串
概述直接上代码,记录一下,方便日后使用:示例一将十进制转换为二进制和十六进制字符串;int num = 23;QString str = QString::number(num,16);//转换为十六进制str = QString::number(num,2);//转换为二进制示例二将二进制字符串转换为十进制,十六进制字符串:QString str = "1011101";bool ok;int val = str.toInt(&ok,2);//以二进制数读入str = Q原创 2021-10-25 17:17:42 · 4723 阅读 · 0 评论 -
QT中将float数转换为QString类型
概述直接上代码,下面是示例:示例一float up = 23.45;QString str = QString::number(up ,'f',2);示例二float up = 23.45;QString str = QString::asprintf("%.2f",up);示例三float up = 23.45;QString str;str = str.setNum(up,'f',2);示例四float up = 23.45;QString str;str = str原创 2021-10-25 17:06:07 · 9232 阅读 · 0 评论 -
qt中QMap与QMultimap用foreach遍历
引言若只是单独的遍历容器,不修改容器中元素的值,可以使用foreach来实现,比使用迭代器来遍历元素更简洁,使用foreach迭代器是创建了原来容器的副本,所有不能修改容器中数据。下面看两个示例。示例示例一遍历QMap容器中的参数:QMap<QString,int> map;foreach(const QString str,map.keys()){ qDebug()<<str<<":"<<map.value(str);}示例二遍历QM原创 2021-10-25 16:41:01 · 5615 阅读 · 0 评论 -
qt5中QString输出变量的值
概述QString类中有两种实现输出字符串中含有变量值的方式,这里做下记录。示例方法一使用QString的函数qsprintf;QString::qsprintf("年龄是%d",m_age);方法二使用;原创 2021-10-25 11:18:24 · 2378 阅读 · 0 评论 -
qt中创键树形控件QTreeWidget与QStackWidget相绑定
引言实现点击下拉列表的项对应的跳转到相应的堆栈窗口,且每个堆栈窗口中都有各自的树形控件,更换可执行文件所在目录下的文件data.json后,点击更新按钮,可以更新所有堆栈窗口的树形控件。效果示例下面是实现代码:main.cpp#include "dialog.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); Dialog w;原创 2021-10-18 09:37:10 · 1125 阅读 · 0 评论 -
qt中树形控件QTreeWidget的项点击后获取该项的文本
概述通过点击树形控件的项,可以得到被点击的树形控件的文本,使用树形控件的信号itemPressed与所在类的槽函数绑定,通过传递参数QTreeWidgetItem和列column,在绑定的槽函数中得到被点击的项的文本。下面上代码:connect(ui->treeWidget,&QTreeWidget::itemPressed,this,&configBtnNameDialog::onSelectedItem);//所绑定的槽函数void configBtnNameDialog:原创 2021-10-14 16:38:09 · 5091 阅读 · 0 评论 -
qt中解析json字符串的时候出现错误missingNameSeperator
概述当解析json字符串,编译代码的时候没有问题,但是当程序调式运行到解析json字符串的时候,即这句:QJsonParseError parseError; QJsonDocument doc = QJsonDocument::fromJson(byteArray,&parseError); if (!doc.isNull() && parseError.error == QJsonParseError::NoError) {}此时调试程序可以看到parse原创 2021-10-13 14:01:42 · 1617 阅读 · 0 评论 -
qt中设置QCheckBox的文本与勾选框之间的距离
引言项目中需要设置QCheckBox的文本与勾选框之间的距离,还有需要将勾选框设置的大一点,不是使用原始大小的勾选框。花了一点时间才知道如何实现。现在记录一下。示例我是通过样式表实现的文本与勾选框之间的距离,以及勾选框的大小。下面是代码。创建基于QWidget的项目。main.cpp中的代码不做改变,dialog类中设置控件QCheckBox的样式。dialog.h#ifndef DIALOG_H#define DIALOG_H#include <QDialog>QT_BEG原创 2021-10-11 15:23:36 · 2770 阅读 · 0 评论 -
qt设置模态对话框并设置对话框的位置
引言当对话框弹出的时候,其它的操作不能进行,这个对话框就是模态对话框,非模态对话框弹出的时候,其它的操作依旧可以做。以上就是通俗的理解模态对话框与非模态对话框。下面实现当模态对话框弹出的时候,设置弹出的位置正好居于其整个程序的中心位置。案例下面是以个对话框弹出时关于模态和其展示位置的设置。 //弹出创建群组对话框 m_groupWidget = new QWidget(); if (m_groupWidget != nullptr) { m_groupWidge原创 2021-09-30 11:28:46 · 3794 阅读 · 0 评论 -
qt获取QString中第一个汉字
概述一串汉语中获取这串汉语中的第一个汉字。采用的方法front(). QString str(QStringLiteral("李数")); QString strText = str.front();原创 2021-09-29 17:59:29 · 988 阅读 · 0 评论 -
qt中在QMultiMap中删除自定义数据类的元素
引言当我们使用QMultiMap的remove函数来删除容器中的某一个元素时,若是容器中存放的是基本数据类型,则程序编译的时候没有任何问题,但是当容器中存放的是自定义的数据,这时若是C++基础比较扎实的,应该不会出现编译报错的问题,但是C++j基础不扎实的,就不会在自定义数据类型中重写赋值运算符函数,故而导致使用remove删除容器中的元素时,会出现编译错误。方法其实上述大致提到是因为自定义数据类型需要重写赋值运算符。故而在自定义数据类型中重写赋值运算符便可编译正常。究其原因是因为remove函数本身原创 2021-09-29 17:33:51 · 708 阅读 · 0 评论 -
qt中关于按钮的click()函数卓见
概述按钮有一个基类QAbstractButton,这个类中有一个函数click(),j几乎所有的函数都继承了这个类QAbstractButton,同时这个函数click()是一个公有的槽函数,也就是意味着所有的子类都可以调用这个函数。而这个click()函数在调用的时候会触发与点击相关的所有信号。原文是这样说的All the usual signals associated with a click are emitted as appropriate. If the button is checka原创 2021-09-29 14:15:16 · 2692 阅读 · 0 评论