Qt
文章平均质量分 58
自己学习过程中的一些记录
风烟倦
这个作者很懒,什么都没留下…
展开
-
Qt中的进程通信1 - 共享内存
共享内存即两个(或多个)程序共享操作系统中的一块空间,这样程序1就可以把想传给程序2的数据放到共享内存中,然后程序2去读取共享内存,这样通过间接的一种方式实现了程序间的数据传输。下面例子展示了在程序1打开时,程序2通过命令行参数给程序1传递这个参数的功能。原创 2022-12-01 15:32:35 · 658 阅读 · 0 评论 -
Linux环境下提升Qt编译速度
Qt提升编译速度原创 2022-11-10 16:43:22 · 956 阅读 · 0 评论 -
在Qt中使用MySQL
在Ubuntu中Qt使用MySQL原创 2022-08-30 21:55:58 · 2832 阅读 · 2 评论 -
Qt自定义委托
Qt中的委托通常都是继承自QStyledItemDelegate或者QItemDelegate,二者的区别主要在于绘制方式,QStyledItemDelegate会使用当前样式绘制,并且能够使用qss,因此在在自定义委托时,一般使用 QStyledItemDelegate作为基类。除此之外,二者基本没有区别,写法和用法都一样。继承 QStyledItemDelegate需要实现以下几个函数:createEditor():returns the widget used to change data f原创 2022-05-27 09:40:28 · 1851 阅读 · 1 评论 -
QTableView效率优化3 - 自定义Model的内容补充
在上一篇文章 - QTableView效率优化2中https://blog.csdn.net/qq_37996632/article/details/123551325?spm=1001.2014.3001.5501,继承QAbstractTableModel自定义了一个简陋的table model,虽然能快速加载出10w,100w级别的数据,但是本身并没有任何接口。想要这个model正常使用,一般来说还需要加上这么几个接口:setItemText() - 为指定的单元格(QModelIndex/row原创 2022-03-18 16:05:31 · 2084 阅读 · 1 评论 -
QTableView效率优化2 - 自定义Model秒级加载百万行数据
在前文中,对于QStandardItemModel的效率进行了部分优化,https://blog.csdn.net/qq_37996632/article/details/123427832?spm=1001.2014.3001.5501,几万行以内的数据,QStandardItemModel还是非常好用的,直接有Qt写好的大量现成接口。也正是因为QStandardItemModel和QStandardItem包含的东西过多,不够简洁,所以在十万行级别的大量数据时QStandardItemMode...原创 2022-03-17 17:02:28 · 6608 阅读 · 1 评论 -
QTableView效率优化1 - QStandardItemModel
QStandardItemModel1. 为QStandardItem设置数据时table_model->setData(table_model->index(i, j), _item_str, Qt::DisplayRole);2. 禁用resizeToContents() 如果对 QTableView 的 verticalHeader 或 horizontalHeader 设置setSectionResizeMode(QHeaderView::ResizeToConten...原创 2022-03-17 15:01:24 · 5467 阅读 · 3 评论 -
win10/win11安装qt4.8
1. 下载安装包首先需要下载qt4.8和编译器mingw4.8.2的安装包,下载地址如下qt-opensource-windows-x86-mingw482-4.8.6-1.exe -https://download.qt.io/archive/qt/4.8/4.8.6/qt-opensource-windows-x86-mingw482-4.8.6-1.exe i686-4.8.2-release-posix-dwarf-rt_v3-rev3.7z - https://download.qt..原创 2021-12-22 16:39:37 · 3671 阅读 · 0 评论 -
QTextBrowser显示图片(图片文字对齐)
有时候,除了文字,还需要在QTextBrowser显示一些图片,图标之类的。语法实际上也很简单,用QTextBrowser的insertHtml(QString)就行。理论上下面这样的代码就可以了QString html = "<div style=\"height=20\"> \n" "<img src=:/images/message/warning.svg style=\"vertical-align:middle\"> \n" "<span>Te原创 2021-12-03 09:56:26 · 3814 阅读 · 2 评论 -
QTreeView导航菜单效果
最近用墨刀做原型,感觉墨刀上的导航菜单控件还是挺好看的(至少比原生的QTreeView好看)。重新用paintEvent()绘制一个貌似也不难,但是有现成的QTreeView在,还能为每个节点设置QVariant数据(给每个节点对应的页面使用),还是美化一下QTreeView,用现成的QTreeView吧。mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#...原创 2021-10-24 15:01:03 · 1889 阅读 · 1 评论 -
Qt模拟Linux终端 1 - Linux指令调用
在一些特定场合中,直接调用Linux系统中自带的终端来执行Linux命令是不太适用的,有时用户就希望能不打开终端,直接在软件界面中输入命令。对于这种情况,可以使用QProcess来实现。Qt对于QProcess的描述如下:The QProcess class is used to start external programs and to communicate with them.To start a process, pass the name and command line...原创 2021-10-21 00:01:03 · 3855 阅读 · 2 评论 -
Qt存储二进制文件
1. 存储基本类型基本类型如int, double, char等,读写时按照其所占字节长度进行读写即可。要注意的是读写顺序一定要保持相同。如先写的int再写的double,那么读取时也必须按照这个顺序来依次读取。write test.datint aaa = 111;double bbb = 222.222;char ccc[4] = "ccc";QFile file("test.dat");if (file.open(QIODevice::WriteOnly | QIODevic.原创 2021-10-20 10:10:10 · 3632 阅读 · 1 评论 -
QTreeView三态复选
在Qt的model/view中,QStandardItem是可以设置复选效果的,在QTreeView和QTableView等中以QCheckBox的样子显示出来。item->setCheckable(true); // 设置是否能复选(默认只有√和×两种形态)item->setTristate(true); // 设置在复选效果中,是否能出现三态(即部分选中的■)在低版本的Qt中,QTreeView实现复选需要手动进行逻辑设置,只设置个...原创 2021-10-13 14:59:11 · 2051 阅读 · 2 评论 -
C++/Qt中的内存管理
智能指针(Smart Pointer)和原始指针(Raw Pointer)智能指针负责对象生命期管理(这里假设智能指针作为类的非静态成员变量,并借助类的构造函数和析构函数来完成动态对象的自动化管理):所以动态对象的创建和析构全都由unique_ptr和shared_ptr来做; 原始指针不负责对象生命周期管理:原始指针擅长调用动态对象,原因就是简化接口。如果这时候使用shared_ptr来传递动态对象和使用原始指针来传递动态对象本质上没有区别,为了简单还是传递原始指针更好一些;Qt的半自动化原创 2021-09-10 09:28:58 · 456 阅读 · 0 评论 -
QCustomPlot使用
设置x轴,y轴的颜色ui->plot2d->xAxis->setBasePen(QPen(QColor(227, 227, 227), 2));ui->plot2d->yAxis->setBasePen(QPen(QColor(227, 227, 227), 2));设置刻度QPen pen;pen.setColor(QColor(227, 227, 227));pen.setWidth(1);// 主刻度ui->plot2d-&g.原创 2021-09-09 16:18:29 · 283 阅读 · 0 评论 -
Ubuntu安装qt4.8
由于qt4.8支持的环境比较老,所以ubuntu18 20这些高版本安装时会出现各种问题,最好在14和16下安装,本文的版本是ubuntu16.04。下载并安装首先下载,然后解压,下载地址为:https://download.qt.io/archive/qt/4.8/4.8.6/tar -xzvf qt-everywhere-opensource-src-4.8.6.tar.gz 然后cd进解压目录中,输入./configure,然后选择o回车,接着输入yes回车./config原创 2021-07-04 17:31:53 · 2309 阅读 · 2 评论 -
Linux下Qt开发遇到的问题总结
QtCreator中无法输入汉字sudo apt install fcitx-frontend-qt5原创 2021-06-22 11:37:49 · 1132 阅读 · 0 评论 -
Qt(QTextBrowser)点击链接打开浏览器/文件夹/文件
auto text_browser = new QTextBrowser(this);text_browser->setFocusPolicy(Qt::NoFocus);text_browser->setOpenLinks(false);text_browser->setOpenExternalLinks(false);// 点击打开文件夹/文件text_browser->append("<a href=\"file:///C:/Users/wangjun/...原创 2021-06-14 14:06:45 · 4625 阅读 · 0 评论 -
Qt中浏览器QWebEngineView的使用1
当今的桌面软件开发,web化逐渐成为了趋势,VSCode,Atom等一系列优秀的软件都是基于github家的Electron(使用html,css,js来进行开发的桌面端应用程序),通俗得来说,就是把网页打包成一个在桌面运行的程序。优点是开发快速,前端也能开发桌面软件,并且跨平台,缺点是性能差速度慢,不能做成大型商业软件。类比一下notepad和vscode的打开速度就知道了。回到本篇博客的目的,我们为什么要在Qt中嵌入一个网页?为什么不直接使用Electron开发整套软件?1. 由于web端.原创 2021-04-25 23:32:38 · 12139 阅读 · 3 评论 -
QtTreePropertyBrowser使用
简单介绍QtPropertyBrowser是一套用以显示属性的控件,QtDesigner右边的属性编辑器用的就是该控件在安装Qt时,如果选择了安装源码,即下图选中的Sources,那么在Qt的安装目录下是包含了QtPropertyBrowser的完整源码的QtPropertyBrowser的源码位置目录如下,在Src的qttools的shared目录下如果没有安装源码,也可以在github上下载,地址如下:qt4版本:https://github.c...原创 2021-03-30 23:26:27 · 8642 阅读 · 9 评论 -
QTreeWidget使用
获取编辑完成后的内容class FS_TreeWidget : public QTreeWidget{ Q_OBJECT public: FS_TreeWidget(QWidget *parent); ~FS_TreeWidget(); protected: virtual void commitData(QWidget *editor) { QString newText = ((QLineEdit *)editor)->text(); /...原创 2021-02-09 11:04:01 · 770 阅读 · 0 评论 -
在VS中使用Qt Linguist完成国际化翻译
1. 在Qt Vs Tool中点击Create New Translation File,创建翻译文件,此时项目文件夹目录中会生成一个后缀为.ts的文件,同时此文件也在出现在Vs的解决方案资源管理器中。2. 双击Vs中上图的.ts文件,进入到Qt预言家中进行翻译,代码中用tr()括上的和ui界面中的文字都会出现(在qml代码中为qStr()),如ui界面中原本的文字是QML Test,在翻译中可以写成QML测试。如果代码中进行了改动,可以通过右键.ts文件,点击lupdat...原创 2021-01-27 23:46:36 · 2770 阅读 · 0 评论 -
Qt点击按钮出现下拉窗口
介绍:可通过QWidgetAction,给QToolButton设置Action达到目的,无需专门去自定义一个控件,在使用时注意给QToolButton设置setToolButtonStyle(Qt::ToolButtonTextBesideIcon)和setPopupMode(QToolButton::InstantPopup)两个属性。FS_Popup_Widget.h#pragma once#include <QToolButton>#include <...原创 2021-01-09 16:41:03 · 3027 阅读 · 1 评论 -
Qt/C++获取实时CPU使用率
首先了解一下CPU使用率的计算方式,无论是单个进程cpu占用率还是系统整个cpu使用率,都是一样的计算公式:cpu使用率=运行时间 /间隔时间 运行时间 = 内核时间 +用户时间 -空闲时间 间隔时间 = 内核时间 +用户时间根据上述公式的原理,在计算CPU使用率时需要阻塞/等待线程若干时间,一般这个时间为500ms/1000ms。由于需要阻塞线程,所以计算CPU使用率的函数是绝对不能写在主线程里的,因此另开一个线程用以计算该公式,代码如下:worker.h(开启从线程计算CP...原创 2020-12-23 23:44:35 · 8114 阅读 · 6 评论 -
vs编译配置qwt
1. 首先打开vs的命令行工具,然后cd到qwt的下载解压目录2. 依次输入命令来编译qmake qwt.pronmake3. 将编译好的东西放进qt安装路径msvc的目录下(1)将生成的的bin目录下的qwtd.dll/qwt.dll拷贝到Qt安装目录下:"C:\Qt\Qt5.12.0\5.12.0\msvc2017_64\bin"下,将qwtd.lib/qwt.lib拷贝"C:\Qt\Qt5.12.0\5.12.0\msvc2017_64\lib"下;(...原创 2020-11-05 22:46:07 · 1011 阅读 · 0 评论 -
QTableWidget/QTableView使用总结
常用属性// 禁止表格编辑tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);// 设置表格选择模式tableWidget->setSelectionBehavior();QAbstractItemView.SelectItemsQAbstractItemView.SelectRowsQAbstractItemView.SelectColumnstableWidget->setSelecti原创 2020-10-29 22:39:22 · 3026 阅读 · 0 评论 -
Qt获取VTK右键点击信号
利用vtkEventQtSlotConnect可以实现Qt和VTK交互,一般在Qt中使用VTK,用的是QVTKWidget(太老了建议不要使用),QVTKOpenGLNaiveWidget等封装了VTK功能的Qt控件,基类为QWidget,可加入Qt的布局中。QVTKDemo.h#pragma once#include <QtWidgets/QMainWindow>#include "ui_QVTKDemo.h"#include <QPointer>#.....原创 2020-10-24 11:29:57 · 1209 阅读 · 1 评论 -
Qt去除标题栏后的窗口的移动和阴影效果
实现阴影效果需要include <QGraphicsDropShadowEffect>,因此要在Qt设置上给Windows Extras打上勾。原理则是嵌套一个QWidget,新建的QWidget上放上原有的控件,作为原来的背景,而原来的背景则用于显示阴影的效果,阴影大小则为两个背景的间距。移动方面则是通过重新实现Qt中的那几个鼠标相关的虚函数。QtTest2.uiQtTest2.h#include <QtWidgets/QWidget>#...原创 2020-10-21 00:18:24 · 578 阅读 · 0 评论 -
Qt中一些实用的技巧
当QLabel中的文字过长,在最后面显示省略号QString newStrMsg = "1234567890abcdefghijklmnopqrstuvwxyz";QFontMetrics fontWidth(ui->noteValueLabel->font()); //得到每个字符的宽度QString elideNote = fontWidth.elidedText(newStrMsg, Qt::ElideRight, 150); //最大宽度150像素ui-&g.原创 2020-10-14 21:55:23 · 739 阅读 · 0 评论 -
Qt任务栏图标显示进度条
QtTest.uiQtTest.h#pragma once#include <QtWidgets/QWidget>#include "ui_QtTest4.h"#include <QPointer>class QTimer;class QWinTaskbarButton;class QWinTaskbarProgress;class QtTest4 : public QWidget{ Q_OBJECTpublic: ...原创 2020-10-07 00:54:22 · 1278 阅读 · 1 评论 -
Qt实现最近打开文件功能
mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QMenuBar>#include <QMenu>#include <QSettings>#include <QFileDialog>#include <QMessageBox>#include <QApplication>#inc.原创 2020-09-17 21:58:42 · 2252 阅读 · 1 评论 -
Qt中的控件缩写
QLabel lbl QCheckBox chk QPushButton btn QSpinBox spn QToolButton tbn QComboBox cmb QRadioButton rdo ...原创 2020-09-06 22:38:01 · 4483 阅读 · 0 评论 -
Qt中的颜色
QColor和QString的相互转换// QColor转QStringQColor color(255,0,255);QRgb mRgb = qRgb(color.red(),color.green(),color.blue());QString color_str = QString::number(mRgb, 16);// QString转QColorQString color_str = "FF00FF";QColor color2(color_str.toUInt(NULL,.原创 2020-08-19 15:39:19 · 3196 阅读 · 0 评论 -
Qt常见错误总结
void showEvent(QShowEvent *e){ this->setAttribute(Qt::WA_Mapped); QWidget::showEvent(e);}原创 2020-08-10 21:56:43 · 3792 阅读 · 0 评论 -
为QToolBar上的QAction设定样式
新建一个空白的Qt Widget项目,ui选QMainWidget(自带QToolBar)#include "mainwindow.h"#include "ui_mainwindow.h"#include <QToolBar>#include <QAction>QAction * createAction(QString name){ QAction *action = new QAction(name); action->setObj...原创 2020-08-04 22:28:46 · 9302 阅读 · 0 评论 -
Qt/C++中常用的数据转换
string转const char* string s = "helloworld"; const char* c_s = s.c_str();const char* 转stringconst char* c_s = “helloworld”;string s(c_s);char* 到QStringchar *s = "helloworld";QString str = QString(QLatin1String(s));QString到cha...原创 2020-05-28 22:33:47 · 273 阅读 · 0 评论 -
Qt可编辑的QLabel
实现原理:将QLabel和QLineEdit放到QStackedwidget中,用事件过滤器实现切换。QEditLabel.h#include <QStackedWidget>#include <QLabel>#include <QLineEdit>#include <qevent.h>#include <QObject>#include <QPointer>class QEditLabel : pu...原创 2020-05-13 22:36:23 · 1859 阅读 · 0 评论 -
QComboBox实现下拉列表复选功能
QCheckboxCombo.h#include <QComboBox>#include <QListView>class QCheckboxCombo : public QComboBox{ Q_OBJECTpublic: explicit QCheckboxCombo(QWidget *parent = nullptr); bool eventFilter(QObject * watched, QEvent * event) overri.原创 2020-05-12 23:46:49 · 1215 阅读 · 2 评论 -
VS创建Qt项目报错:未将对象引用设置到对象的实例
这个问题是因为装好vs插件后没有设置相关的Qt Versions原创 2020-05-08 22:40:23 · 8249 阅读 · 2 评论 -
Qt安装配置qwtpolar
qwtpolar 是 qwt 的扩展,主要用来绘制极坐标下的函数图形,如下图所示。qwtpolar具体的安装配置过程和qwt的类似,qwt的安装配置请参照这篇博客:https://blog.csdn.net/qq_37996632/article/details/1057409331.下载并解压下载地址:https://sourceforge.net/projects/qwtpo...原创 2020-04-25 17:02:13 · 1362 阅读 · 0 评论