Qt
十里春风_jzh
这个作者很懒,什么都没留下…
展开
-
简单实现QT对象的[json]序列化与反序列化
众所周知json作为一种轻量级的数据交换格式,在开发中被广泛应用。因此如何方便的将对象数据转为json格式和从json格式中加载数据到对象中就变得尤为重要。在python类动态语言中,我们可以很方便的使用json.dumps()和json.load()完成json数据的生成和加载。但是在QT中就不能非常方便的转换。因此本文将使用QT中的元对象系统实现简单的json数据转换和加载。原创 2024-11-17 15:28:23 · 857 阅读 · 0 评论 -
浅谈QT中Tab键的切换逻辑
QT Ta焦点切换顺序原创 2024-10-31 22:14:44 · 370 阅读 · 0 评论 -
QComboBox使用代理设置鼠标悬停提示
Qt中原生的ComboBox控件的下拉选项是没有鼠标悬停提示(ToolTip)功能,那么想要实现提示功能,就需要对控件进行加工,可以通过重写代理类(QStyledItemDelegate)来实现功能。原创 2024-02-25 20:20:27 · 621 阅读 · 0 评论 -
QT combobox下拉从树中选择节点
QT combobox下拉从树中选择节点原创 2022-08-18 17:52:08 · 1913 阅读 · 1 评论 -
QDockwidget悬浮自定义(最小化,最大化),关闭自动停靠
简介某些软件需要用到QDockwidget停靠窗口,这时可能就需要有一个需求,在点击QDockWidget的悬浮按钮后让窗口指定一个大小,并且显示在桌面中间,点击关闭悬浮后的关闭按钮后,让悬浮窗口自动停靠到原来位置https://www.cnblogs.com/luoxiang/p/14277269.html...原创 2022-04-24 17:48:12 · 3944 阅读 · 0 评论 -
QSplitter设置比例
//方法一,将布局中的两个控件设置为0:1ui->splitter->setStretchFactor(0,0);ui->splitter->setStretchFactor(0,1);//方法二,将两个部件设置为窗口的1/3及2/3宽度ui->splitter->setSizes(QList<int>()<<1/3*width<<2/3*width);上述两种方法我都试过,都可以很好的设置比例,网上有说第一种设置没有效果,原创 2022-04-21 10:46:15 · 4415 阅读 · 3 评论 -
QGraphicsView创建悬浮按钮
简介QGraphicsView原创 2022-03-08 16:52:42 · 2360 阅读 · 5 评论 -
QT工程文件(pro/pri)常用配置
//指定生成可执行文件名称TARGET = xxx//指定可执行文件生成路径DESTDIR = $$PWD/xxx//引用pri模块include($$PWD/xxx.pri)//添加头文件搜索路径INCLUDEPATH += $$PWD/xxx//添加库文件搜索路径DEPENDPATH += $$PWD/xxx//指定软件图标,必须为ico图标RC_ICONS = log.ico//判断当前是debug模式还是release模式CONFIG += debug_and_relea原创 2022-01-26 16:57:47 · 571 阅读 · 0 评论 -
Qt程序一键打包脚本
@REM 源代码路径~dp0表示脚本所在位置,不一定需要,若存在额外需要拷贝得文件可设置set DIR=%~dp0额外路径 @REM目标路径,及打包所产生得文件夹所存放得路径set SOURCEDIR=%userprofile%\Desktop\test@REN生成执行文件路径,及拷贝exe从文件set BINPATH=E:\project\ccpclient\ccpc\bin\release\@REM插件路径set DLLPATH=%DIR%\src\libs\plugins_r@REM原创 2022-01-26 16:47:42 · 702 阅读 · 0 评论 -
QT读写粘贴板
QString source = ui->textEdit_code->toPlainText();QClipboard *clipboard = QApplication::clipboard();//获取系统剪贴板指针QString originalText = clipboard->text();//获取剪贴板上文本信息QMimeData *data = clipboard->mimeData(); //获取mimeData数据QImage image = clipbo原创 2021-11-24 15:23:55 · 1114 阅读 · 0 评论 -
Qt之属性树
在QT设计师中有一个很好用的部件属性设置窗口,qt却没有提供此控件也没有对应的例子,后来发现若安装qt时选择了安装源码,可以在源码中找到,在源码中搜索qtpropertybrowser即可。由于之前不知道qt源码中有qtpropertybrowser的源码,因此自己实现了一个,效果如下思路:控件使用QTreewidget,设置属性的控件使用委托代理完成,根据不同的类型创建不同的代理控件,checkBox这类之间勾选的控件使用setItemWidget()方法设置到对应的列中,当属性被改变时通过信原创 2021-07-30 09:40:07 · 682 阅读 · 0 评论 -
QT重写QSortFilterProxyModel实现多列数据过滤
在QTableView中可以使用QSortFilterProxyModel来过滤model的数据,可以通过setFilterKeyColumn(int colnum)设置需要过滤的列,当设置为-1时则过滤对象为所有列,但是此种方式只要某一列中有符合条件的数据就会被显示出来因此我们可以重写QSortFilterProxyModel的filterAcceptsRow(int source_row, const QModelIndex &source_parent)方法实现同时过滤指定多列的数据效果如原创 2021-07-23 14:12:55 · 3457 阅读 · 2 评论 -
Deepin(UOS使用linuxdeployqt打包qt程序
一、编译linuxdeployqt默认你已经安装好Qt creatorlinuxdeployqt下载地址下载上图中的任意一个代码,解压(以tar.gz为例子)tar -zxvf xxx.tar.gz进入linuxdeployqt文件夹cd linuxdeployqt修改tools/linuxdeployqt/main.cpp,注释掉判断版本的代码vim tools/linuxdeployqt/main.cpp需要注释的代码如下 /*if (strverscmp (glcv,原创 2021-06-24 13:15:15 · 1172 阅读 · 1 评论 -
Qt链接MySQL遇到的坑
简介环境:Qt 5.14.2+MySQL8.0.25(ZIP版)+msvc2017_64编译器Qt从5.12版本后不在自带MySQL数据库的连接驱动,需要手动编译,编译之前你的先安装MySQL,和安装qt源码。默认你已经安装好了MySQL和安装qt源码。一、编译进入qt安装目录,然后找到Src\qtbase\src\plugins\sqldrivers\mysql,我的路径为:C:\Qt\Qt5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql原创 2021-05-21 17:45:57 · 1171 阅读 · 11 评论 -
QT使用系统默认程序打开文件
QDesktopServices::openUrl(QUrl::fromLocalFile(filepath));原创 2021-05-21 17:10:24 · 1438 阅读 · 1 评论 -
QT TreeView自定义Model 实现自定义过滤筛选数据
简介通常我们使用QSortFilterProxyModel过滤数据时,只会过滤树的父节点,符合条件的子节点不会被显示出来,因此我们需要继承QSortFilterProxyModel,重写filterAcceptsRow函数可以实现符合条件的子节点也显示出来。.h#include <QSortFilterProxyModel>class SelectFileSortFilterProxyModel : public QSortFilterProxyModel{ Q_OBJECT原创 2021-04-21 10:27:32 · 3552 阅读 · 5 评论 -
VS+QT调用python脚本
简介python 丰富的模块文件使得python在完成一些功能时非常的方便,在工程中调用python脚本使得效率大大提升。一、环境配置python环境配置要想在vs中调用python脚本,先要将python的解释环境配置到vs工程中。在vs中新建qt工程。然后将python解释器环境拷贝到工程目录下。得到python解释器环境的方式有很多:复制安装好的整个python环境使用pycharm等三方工具创建虚拟环境从安装好的python环境中提取所需要的环境本文采用第三中方式复制图中三原创 2021-01-25 17:02:29 · 2729 阅读 · 8 评论 -
QT自定义鼠标样式
//在窗口中调用鼠标样式使用的是setCursor函数//函数原型setCursor(const QCursor &cursor)Qcursor样式,摘自Qt帮助文档除此之外我们还能使用图片来自定义素表样式QPixmap pix(imagepath); QSize size(10,10);//设置图片大小pix = pix.scaled(size,Qt::keepAspectRatio);setCursor(QCursor(pix));...原创 2021-01-19 16:52:33 · 500 阅读 · 0 评论 -
Qt之模型树节点状态恢复(刷新后保持节点展开状态)
简介在实际用途中,我们需要在Treeview上添加节点后需要保持树的展开状态,但是qt的model刷新后,Treeview会自动收起,因此需要自己记录树的状态,并在数据刷新后恢复原来的展开状态实现//先记录下节点的展开状态void MainWindow::GetExpandNode(QModelIndex root){ int row = m_model->rowCount(root); for(int i=0;i<row;i++) { QMod原创 2021-01-14 18:58:02 · 1624 阅读 · 1 评论 -
Qt树(QTreeView,QTreeWidget)非递归遍历方式
记录一下void MainWindow::getItemNonRecursive(){ QList<QTreeWidgetItem*> items; //先获取顶层节点 int childcount = ui->treeWidget->topLevelItemCount(); for(int i = 0; i < childcount; i++) { items << ui->treeWidget-&原创 2020-11-12 16:43:26 · 2640 阅读 · 1 评论 -
Qt之键盘事件(捕获组合键)
简介今天在做快捷键需求时,发现了一个问题,qt的键盘事件不能捕获多个按键按下.即便是在使用modifiers()时,也只能获得类似于shfit+x,ctrl+c,alt+y等等之类的快捷键,对于shift+x+c诸如此类更多的组合就无能为力的.于是各种网上查找资料即查阅文档得知,qt的键盘事件机制一次每次只能获取一个按键(排除shift,alt,ctrl等特殊按键),因此在需要获取多个按键按下或者同时按下时,就需要保存每个按下的按按键,在弹起时在删除弹起的按键.值得注意的是当按键一直被按下时也会出发k原创 2020-11-11 11:09:28 · 5585 阅读 · 6 评论 -
QProcess调用外部程序阻塞等待问题解决
QProcess调用外部程序阻塞等待问题解决简介第一种第二种简介在使用QProcess调用外部程序时,可能会遇到两种场景:1.调用起来之后就不管,直接运行后面的代码2.调用起来后需要等待外部程序执行完成,在继续运行下面的代码第一种这种比较简单,新建一个进程设置好参数就可以了QProcess *openProcess=new QProcess(this); //新建一个process进程//绑定process进程完成信号,垃圾回收connect(openProcess, QOverload&原创 2020-06-12 14:56:16 · 7805 阅读 · 5 评论 -
QT使用正则表达式过滤LineEdit输入(其他控件同理)
介绍经常会有需要限制输入框中只能输入数字或者浮点数的需求,使用正则表达式能够快速的解决这些问题。 //限制lineedit输入 QRegExp rx("[1-9][0-9](\\.\\d{1,2})?$"); /*功能:限制输入小数点前两位小数点后两位的浮点数,也可以只输入两位整数 */ QRegExpValidator *pReg = new QRegExpValidator(rx, this); ui->lineEdit_Interpolation-&原创 2020-06-05 10:49:52 · 995 阅读 · 1 评论 -
Qt之Tableview之定义数据结构
Qt之Tableview之定义数据结构tablewidgetmodel.h#ifndef TABLEWDIGETMODEL_H#define TABLEWDIGETMODEL_H#include <QAbstractTableModel>#include <QStringList>struct mydata{ int number; QString name; int age;};class TableWdigetmodel : publ原创 2020-06-02 20:12:28 · 986 阅读 · 0 评论 -
Qt隐藏窗口标题后实现窗口可以拖动,更新可改变大小,最大化拖拽还原
1.隐藏标题栏 // 去掉标题栏,去掉工具栏,窗口置顶 setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint);2.设置窗口透明度this->setWindowOpacity(0.7);3.隐藏标题栏后实现拖动隐藏标题栏后窗体是无法拖动的,这个时候就需要重写mous...原创 2020-03-25 17:00:23 · 3407 阅读 · 14 评论 -
Qt中设置Qlabel中文乱码报错问题
在Qt create或者vs中开发qt项目时,经常遇到中文乱码,记录下来以免忘了。使用Qt create开发时,选择工具->选项->文本编辑器->行为,将默认编码改成UTF-8,UTF-8 BOM改成如果编码是UTF-8则添加,如下图。然后在对应的cpp或者头文件中添加#pragma execution_character_set(“utf-8”);即可。使用vs开发qt...原创 2020-03-16 17:12:18 · 2859 阅读 · 0 评论 -
qt旋转图片,实现加载窗口
头文件#pragma once#include <QWidget>#include <QTime>class QPixmap;class QTimer;class MyRoundWidget : public QWidget{ Q_OBJECTpublic: MyRoundWidget(QWidget *parent, int radius = ...原创 2019-11-09 17:27:13 · 405 阅读 · 0 评论 -
qt显示隐藏控件,窗口大小随之变化
#include "mainwindow.h"#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); main_window=this->g...原创 2019-11-01 11:58:39 · 3571 阅读 · 0 评论 -
Qt label控件安装事件过滤器
再用qt开发是,经常用到Qlable,而有时候又需要Qlabel具有点击事件,qt提供了事件点击器就能够实现。QLabel* _label = new QLabel(this); //创建一个label控件_label->installEventFilter(this); //为label控件安装事件过滤器//重写eventFilter函数bool ColorConfig::eve...原创 2019-09-20 16:03:52 · 865 阅读 · 2 评论 -
Qt tablewidgect自定义代理
qt中经常使用delegate来自定义控件的显示方法,通过代理能够在tablewidget/tableview中添加各种各样的控件,达到想要的效果Qt中关于代理的几个类层次如下图所示,QAbstractItemDelegate是所有代理类的抽象基类,QItemDelegate和QStyledItemDelegate是视图组件使用的缺省代理类。QStyledltemDelegate与QltemDe...原创 2019-09-12 14:00:11 · 813 阅读 · 0 评论 -
Qt QDialog类的简单使用
// 去掉问号,只保留关闭this->setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint);//设置窗口标题this->setWindowTitle("面积线分类及编号设置");原创 2019-09-04 20:52:50 · 1395 阅读 · 0 评论 -
Qcombox常用的设置
https://blog.csdn.net/raiven2008/article/details/43417775原创 2019-09-04 20:50:36 · 3263 阅读 · 0 评论 -
Qstring类的简单用法
根据指定的字符分割字符串,split()方法QString str = "hello,world"QStringList list = str.split(",");QString a = list[0]; //a = "hello"QString b = list[1]; //b = "world"QString str2 = b.append(a);str2 = "worldhel...原创 2019-09-04 20:37:41 · 324 阅读 · 0 评论 -
Qtablewidget常用用法
https://blog.csdn.net/raiven2008/article/details/43417775split 按照指定的字符分割,如按照";"或 "/"等分割QString str = "hello,world"QStringList list = str.split(",");QString a = list[0]; //a = "hello"QString b = l...原创 2019-09-04 16:26:19 · 349 阅读 · 0 评论 -
Qt创建悬浮框(不停靠)
因为工作原因,需要做一个悬浮框,做的时候百度了很多资料,没有找到比较完整的资料,分享下自己的经验。先上效果图原创 2019-08-29 18:02:02 · 2846 阅读 · 4 评论