
QT
daboluo520
山河远阔,人间星河,无一是你,无一不是你。
展开
-
Ubuntu 编译Qt 6.0.0
ubuntu 编译 qt 6.0.0原创 2022-06-17 16:03:40 · 884 阅读 · 0 评论 -
Ubuntu 缺库
缺少libtinfo.so.5库原创 2022-06-16 18:00:11 · 806 阅读 · 0 评论 -
QT QFileSystemModel显示文件目录树
一、代码示例// m_outDir,需要打开的目录路径void MainDialog::showDirTree(){ if (!pFileModel ) QFileSystemModel *pFileModel = new QFileSystemModel(); pFileModel ->setRootPath(m_outDir); // 绑定model,并设置索引 ui->treeView->setModel(pFileModel);原创 2022-05-19 17:49:43 · 1918 阅读 · 0 评论 -
QT 使用QMenu创建菜单(示例)
文章目录一、效果图二、代码示例一、效果图二、代码示例QMenuBar *bar = new QMenuBar(this); ui->topLayout->addWidget(bar); QMenu *pFileMenu = new QMenu(QStringLiteral("文件"), this); QAction *pOpenAction = new QAction(QStringLiteral("打开"), this); QAction *pSave原创 2022-05-19 17:30:42 · 1678 阅读 · 0 评论 -
QT XML文件格式化(美化) & 反格式化(压缩)
一、格式化(美化)通过QXmlFormatter进行格式化// 传入xml文件路径QString MainDialog::formatText(const QString &path){ if (path.isEmpty()) return ""; QXmlQuery query; query.setQuery(QString("doc('%1')").arg(path)); QByteArray outArray; QBuffer原创 2022-05-19 17:01:24 · 1199 阅读 · 0 评论 -
QT 修改图片透明度
一、代码MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){ ui->setupUi(this); QString name = "D:/closechat.png"; QImage img(name); QPixmap resultImage = QPixmap::fromImage(img); QPixmap sou原创 2022-03-29 17:34:40 · 1590 阅读 · 0 评论 -
QT QPushButton监听disabled状态
一、实现方式为了通过监听disabled而改变图标,发现QPushButton和QToolButton并没有这个信号,所以需要去监听这个QEvent::EnabledChange事件即可得到这个状态。二、代码// TaskButton继承QPushButtonbool TaskButton::event(QEvent * e){ // 状态改变后,获取当前bool值 if (e->type() == QEvent::EnabledChange) { emit customIsEnab原创 2022-03-10 19:34:16 · 1680 阅读 · 0 评论 -
PC 配置jenkins自动打包
文章目录一、下载jenkins运行环境二、下载jenkins三、安装 qt 5.12.2 和 VS 2017四、安装git五、jenkins新建项目1、jenkins 中git全局凭据配置2、源码管理使用自己创建的good全局凭据3、效果图一、下载jenkins运行环境java jdk 11 镜像下载地址可以下载最新的java sdk 17,但是我下载的最新jenkins版本,jenkins 无法启动,所以使用的java sdk 11二、下载jenkinsjenkins 镜像下载地址jen原创 2022-02-10 14:52:18 · 881 阅读 · 0 评论 -
QT 利用URL Protocol实现网页调起本地程序
一、QT 安装时脚本注入注册表或者自己添加// 依次为目录、键、值,"URL Protocol"这个键必须有WriteRegStr HKCR "customopenwechat" "URL Protocol" "suibianqimingzi"// 键给空字符串就是默认,command目录里的键必须为空WriteRegStr HKCR "customopenwechat\\shell\\open\\command" "" "D:\WeChat\WeChat.exe %1"二、QT 中获取输入参原创 2021-10-21 15:53:26 · 644 阅读 · 0 评论 -
QT 抓取widget转换为图片
QString folder = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation); // 传入需要抓取的widget QPixmap pix = QPixmap::grabWidget(this); pix.save(folder + "/my_img.png");原创 2021-09-17 14:45:43 · 1476 阅读 · 0 评论 -
QT QMetaEnum枚举与字符串互转
一、示例#include <QMetaType>#include <QMetaEnum>#include <QDebug>class MyClass : public QObject{ Q_OBJECTpublic: // key --- value enum FruitsType { apple = 1, pear = 4, banana = 5 }; // 必原创 2021-08-31 14:36:42 · 499 阅读 · 0 评论 -
QT 网格布局插入固定列数的item
一、场景在网格布局插入固定列数的item,比如三列item,根据item的总数计算 #define ITEM_MAX_COL (3) int classNum; // 计算总行数(如总数5, 3列就是2行) // int line = (classNum + ITEM_MAX_COL - 1) / ITEM_MAX_COL; for (int addNum = 0; addNum < classNum; addNum++) { int i = addNum原创 2021-08-26 18:57:06 · 472 阅读 · 0 评论 -
QT 移入控件展示卡片
功能:移入widget显示卡片,并且可以进入卡片不消失(widget与卡片距离离得很近),移出卡片才离开bool DataShowWidget::eventFilter(QObject *obj, QEvent *event){ if (obj == ui->widget && event->type() == QEvent::Enter) { if (!m_noFollow) { m_noFollow = new NoFollowW原创 2021-08-26 18:21:53 · 538 阅读 · 0 评论 -
QT QScrollArea 滑动到指定item位置
一、QT自带的apiQListWidget、QTableWidget、QTreeWidget都有自带的api可以调用,如下示例。但是当自定义一个QScrollArea区域,布局中插入多个item时,就需要自定义滑动位置了。void QListWidget::scrollToItem(const QListWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)二、自定义假设创建一个QScrollArea,布局里面插入原创 2021-04-19 15:06:28 · 7273 阅读 · 0 评论 -
QT 文件操作大全
一、创建文件如果目录不存在,则创建多级目录,最后创建文件void MainWindow::makeFile(const QString &fileAbsoluteName){ QString dirName = fileAbsoluteName.mid(0, fileAbsoluteName.lastIndexOf("/") + 1); QDir dir(dirName); if原创 2021-04-14 17:10:06 · 335 阅读 · 0 评论 -
QT UTC(T和Z格式)时间转换为北京时间
一、UTC协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。和北京时间相差八小时。二、将获取的UTC字符串转换为北京时间。/* T代表时间分隔符,Z代表世界时 */QString utc = "2020-12-18T07:40:01.000Z";QDateTime date = QDateTime::fromString(utc, "yyyy-MM-ddTHH:mm:ss.zzzZ");/* UTC+8 */date原创 2020-12-24 12:49:41 · 3876 阅读 · 0 评论 -
QT 打开程序闪烁cmd窗口
包含多种原因,我的原因是Pro文件多写了一些其他的,删除了下面这句OK了DISTFILES += \ res/images/common/button_down_arrow.png原创 2020-12-07 16:30:09 · 471 阅读 · 0 评论 -
QT Signal and slot arguments are not compatible
一、原因信号和槽绑定的参数不同signals: void runJS(const QString &menuName,bool jump = true);private slots: void onRunJs(const QString &menuName, int jump);二、解决办法由于项目复杂的话,有时候改了没办法找到,到底哪出错了,可以查看信号调用的所有地方来解决。右键点击信号。然后一一比对。...原创 2020-10-29 20:01:38 · 1874 阅读 · 0 评论 -
QT 代码添加QScrollArea
一、QScrollArea一、这是一个控件容器类,可以在UI中直接拖拽,也可以使用代码进行添加,当我们UI添加时,QScrollArea这个容器套了两层,我们放入的控件,都处在scrllAreaWidgetContents层,内层的这个scrllAreaWidgetContents,可以称为内部容器。二、我们可以更换掉它,方法就是QScrollArea::setWidget(QWidget *),如果scrollArea控件是用鼠标拖出来的,那么QT会自动为我们new一个内部容器,如果scrol原创 2020-10-20 17:58:25 · 2501 阅读 · 0 评论 -
QT 三角气泡提示框(文字自适应、自定义三角位置)
文章目录一、效果图1.功能二、实现代码1.MainWindow.cpp2.ToolTipsForm.cpp一、效果图1.功能移入button,出现气泡,移出button,气泡消失。气泡文字自适应长度二、实现代码1.MainWindow.cppMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);原创 2020-09-27 15:18:43 · 3776 阅读 · 0 评论 -
QT 网络请求设置自定义cookie请求头失败的问题
文章目录一、背景二、示例代码1.自己组装HTTP请求(成功)2.采用项目网络组件库(失败)3.解决办法(成功)一、背景我准备在每一次HTTP请求头中加入自己定义的cookie,以便服务端进行验证。所以我通过自己去组装HTTP请求,cookie确实设置进去了,但由于项目中使用的网络通用组件库,我不得不使用这个(为了代码的统一性),我对其已经提供的API进行设置,却始终无法注入自己设置的cookie。二、示例代码1.自己组装HTTP请求(成功) QUrl url("www.4399.com");原创 2020-09-09 16:37:10 · 2194 阅读 · 0 评论 -
QT QListWidget的添加与删除,滚动条显示或隐藏,判断是否滑到顶部或底部,并使QListWidgetItem自适应大小
一、QListWidget 中使 QListWidgetItem自适应大小父部件ListWidgetForm.cppvoid ListWidgetForm::setCard(){ //MessageCardForm 是插入的子Item关联小部件(你自定义的) MessageCardForm *card = new MessageCardForm(this); QListWidgetItem *newItem = new QListWidgetItem(); newItem->原创 2020-09-07 20:55:38 · 8238 阅读 · 1 评论 -
QT QButtonGroup 与 QStackedWidget 实现菜单(Tab)切换
一、效果图三个菜单互斥点击,点击后跳转至相应页面二、QButtonGroup 按钮互斥1.UI结构2.代码void setButton() { ui->btnJungle->setCheckable(true); ui->btnAdc->setCheckable(true); ui->btnMid->setCheckable(true); QButtonGroup *groupMember = new QButtonGroup(); //设原创 2020-09-07 18:41:29 · 1350 阅读 · 0 评论 -
QT 防止按钮快速重复点击
一、实现间隔一秒只能点击一次按钮void MainWindow::on_btnInfoNotice_clicked(){ ui->btnInfoNotice->setEnabled(false); QTimer::singleShot(1000, this, [=]() { ui->btnInfoNotice->setEnabled(true); });}原创 2020-09-07 17:51:55 · 7244 阅读 · 1 评论 -
QT QWebEngineProcess注意事项及扫码登录回调
一、pro文件中需要添加模块二、程序打包除了使用windeployqt.exe打包依赖库以外,还需要手动添加两项文件。第一步:在你程序bin目录下的translations文件中添加文件夹qtwebengine_locales,并在里面粘贴QT 自带的qtwebengine_locales。QT 自带的在如下目录,将这些文件全部粘贴到你添加的那个文件夹中第二步:bin目录下添加文件夹resources,并放入5个文件5个文件在如下目录三、设置过滤器,拦截请求使用场景:扫码登录扫码登原创 2020-08-04 21:12:24 · 2851 阅读 · 7 评论 -
QT 查找程序路径并打开程序,然后查找程序PID,最后关闭这个程序进程
一、查找程序路径通过window系统注册表,查询程序路径位置,比如我要启动百度管家QCoreApplication::setOrganizationName(QString("Baidu"));QCoreApplication::setApplicationName(QString("BaiduYunGuanjia"));QSettings settings(QSettings::NativeFormat, QSettings::UserScope, QCoreAppl原创 2020-07-28 20:58:41 · 1702 阅读 · 0 评论 -
QT Process基本使用
一、执行命令行命令 QProcess p; QString binPath = "D:/apple.exe"; QStringList args; args.append("-v"); args.append("-d") p.setProcessChannelMode(QProcess::MergedChannels); p.start(binPath, args); if (!p.waitForFin原创 2020-07-28 20:41:02 · 1973 阅读 · 0 评论 -
QT QProcess: Destroyed while process (“apple.exe“) is still running
一、出错原因因为我这个程序是一直运行的,它会一直回显数据,如果你使用对象,start启动这个命令后,程序认为QProcess已经执行完毕,自动回收,但是此时程序正在执行中,所以无法销毁这个进程,导致出现这个问题。二、错误代码 QString cmd = "./bin/apple.exe"; QStringList args; args.append("-mode=25280"); args.append("-usr1=pig"); QProcess p; p.原创 2020-07-28 15:27:54 · 12181 阅读 · 2 评论 -
QT 获取特定字符串(以换行结尾)
一、类似如下图字符串1.取版本值,以及下载地址"version=0.0.1\nchatVersion=3.0.14.1205\nwzDownloadUrl=http://panda.com/wzry.v3.0.14.1205.exe\n"2.代码QString MainWindow::getValue(QString &temp, const QString &key){ int n = temp.indexOf(key + '='); temp = temp原创 2020-07-28 10:37:34 · 2342 阅读 · 0 评论 -
QT exe程序与 golang程序通信
一、背景QT 与 GO之间进行通信,可以很方便在windows平台下用golang开发后台服务,c++负责UI界面二、效果图三、QT 程序接收方重写nativeEvent函数bool MainWindow::nativeEvent(const QByteArray &eventType, void *message, long *result){ if (eventType == "windows_generic_MSG") //windows平台 {原创 2020-07-17 19:15:39 · 1353 阅读 · 0 评论 -
QT 两个exe之间通信
一、通信方式通过windowAPI,SendMessage进行通信,等待结果返回,是一种同步的方式。PostMessage是将消息放入消息队列中,立即返回,是一种异步的方式。我采用的是同步的方式,两种方式用法一样。二、发送方A程序#pragma comment (lib,"User32.lib")#pragma comment (lib,"Gdi32.lib")#include <qt_windows.h>#include <QTextCodec>#include原创 2020-07-17 18:53:08 · 3450 阅读 · 2 评论 -
QT QPushButton中设置样式出现异常凹凸的问题
一、设计图两个互斥的button,然后我只想设置下边框的颜色二、设置样式后出现凸起(太丑了)QPushButton#btnMember { color:rgb(51,51,51); font-size: 14px; font-family: "微软雅黑"; //问题就出在下面两行 //当background-color和border-bottom同时设置就会出现凸起。 background-color: white; border-bottom:1px solid rg原创 2020-07-04 16:59:07 · 5451 阅读 · 0 评论 -
QT 工作遇到的小问题
1.QT中清空布局中所有小控件addWidget后,如果使用removeWidget,界面上的小控件不会立即消失,可以进行如下操作QRadioButton *button = new QRadioButton("血刀老祖");button->setParent(nullptr);原创 2020-06-30 15:44:02 · 2156 阅读 · 0 评论 -
QT 计算平均分(向上取整或向下取整)
一、场景需要计算四门成绩的平均分,并向上取整double temp = (math + english + art + chinese) / 5.0int m_AvgScore = ceil(temp);二、相关函数#include <math.h>//向上取整:返回大于或者等于指定表达式的最小整数double ceil(double x);//向下取整:返回小于或者等于指定表达式的最大整数double floor(double x);...原创 2020-06-22 19:21:08 · 6328 阅读 · 0 评论 -
QT 流式布局水平插入小部件(可自动换行)
一、类似于这样的效果图由于对象不确定有多少人,所以使用代码,在布局中添加部件,如果一行撑不下,则自动添加到第二行。二、使用FlowLayoutFlowLayout是一个自定义布局类,它可以水平和垂直地排列其子小部件,可以使小部件的位置根据应用程序窗口的宽度而变化#include <FlowLayout.h>void MainDialogForm::setView(){ //1.在滚路区域中添加FlowLayout类型的布局 FlowLayout *layout =原创 2020-06-16 19:38:42 · 3141 阅读 · 2 评论 -
QT 自定义滑动条(上方有实时方框显示数值,且带有刻度值)
一、效果图二、原理(1)LectureCorrectBoxSliderForm:方形框显示、刻度点以及刻度值。(2)LectureCorrectSliderForm:继承QSlider注:不能放在一个类中,否则方形框无法显示到最左边刻度点的正上方。三、示例代码LectureCorrectBoxSliderForm.h#ifndef LECTURECORRECTBOXSLIDERFORM_H#define LECTURECORRECTBOXSLIDERFORM_H#include <原创 2020-06-15 17:32:12 · 17173 阅读 · 5 评论 -
QT 计算文件夹总大小并转换为B、KB、M、G
一、计算文件夹总大小qint64 fileSize(const QString &path){ QDir dir(path); qint64 size = 0; foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::Files)) { size += fileInfo.size(); ...原创 2020-04-26 18:08:57 · 4649 阅读 · 0 评论 -
QT 删除一周前的日志
1.现象本地客户端log越来越大,写入速度也会变慢,所以在启动时进行清理。2.日志文件名3.代码void deleteLocalLog(){ QDateTime now = QDateTime::currentDateTime(); //日志存储目录 QString logPath = "c:/logs/"; //前七天 QDateTi...原创 2020-04-23 20:34:21 · 1102 阅读 · 0 评论 -
QT UTF-8转GBK编码
在Qt5中使用Unicode来存储、操作字符串,windows下是GBK编码。UTF-8 转 GBKQString appLink = "有道云笔记.lnk";appLink = chineseCodec(appLink);//返回与匹配名称最匹配的对象QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");QTextCodec *gb...原创 2020-03-16 00:17:05 · 1256 阅读 · 0 评论 -
QT 创建、修改桌面快捷方式,固定任务栏快捷方式
一、获取系统文件路径我们用到DesktopLocation和AppDataLocation二、创建与修改快捷方式路径修改可以直接将创建的快捷方式覆盖到指定的路径中即可。(1)桌面快捷方式QString deskTopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);deskTopPath ...原创 2020-03-15 23:28:30 · 3023 阅读 · 0 评论