- 博客(45)
- 资源 (5)
- 收藏
- 关注
原创 QTableView与QStandardItemModel的应用(含示例代码)
QStandardItemModel 是 Qt 框架中用于管理表格、列表或树形数据的通用模型类,基于 QAbstractItemModel 实现,提供了一种简单灵活的方式来处理结构化数据。通过灵活使用数据角色、信号槽机制和委托,可以轻松实现复杂交互和样式。(以下基础知识来源于DeekSeek,我没它总结的好,就借用它的术语,只整理了文本格式,博主自己写的示例代码在第二章)适合快速开发,但对超大数据量(如百万行)性能较低,此时建议自定义模型。对象,封装单元格的数据、样式和角色。自动处理数据更新和视图同步。
2025-05-03 15:47:32
581
原创 Qt 5.15 编译路径吐槽点
在Qt 5.15以前,勾选“Shadow build”会自动将编译文件放在同一个目录下(区分编译器类型、Qt版本、debug和release等),可将代码文件和编译文件区分开,用户不用操心。不得不吐槽,这个界面做的是真的丑,只有鼠标停留在变量上才显示具体信息,查看极不方便,为啥不做个表格之类的,表格下一列直观显示变量的具体信息。虽然这样配置更灵活,但配置确实麻烦,网上没找到相应的方法,需要自己摸索,每个项目都需要手动配置一遍,而且debug和release都需要各自配置,费时费力。
2025-04-26 12:48:47
238
原创 使用DeepSeek查找资料:C++ sprintf % 种类
同样,对于size_t类型,可能需要用%zu,但如果在不支持C99的情况下,可能需要转换类型。是的,在C99中,%F是另一种浮点数的格式,和%f类似,但用大写字母表示INF和NAN,比如INFINITY会显示为INF而不是inf,科学计数法中的指数用E,例如同%E类似?每个说明符可能有不同的修饰符来指定长度,比如l、ll、h等,例如%lld对应long long,%lf对应double(在scanf中需要%lf,但在printf中,%f和%lf都用于double,因为float会被提升为double)。
2025-03-21 14:20:22
667
原创 C++生成动态和静态链接,以及调用方法(手把手教程)
2、将FactoryMethodMode.lib和FactoryMethodMode.dll文件拷贝到编译目录下,需要注意的是如果UseDllTest使用Debug编译,那就拷贝FactoryMethodMode项目中Debug生成的库文件,如果UseDllTest使用Release编译,那就拷贝FactoryMethodMode项目中Release生成的库文件,否则混用的话可能有些问题。2、代码中可看到自动生成了dllmain.cpp文件,里面的DllMain函数是主入口函数。三、调用动态、静态链接库。
2025-03-21 12:03:52
571
原创 QThread::wait: Thread tried to wait on itself
由于使用的是MyObjec::deleteLater()函数,MyObjectt的析构函数是在子线程中执行的,子线程的退出也是在子线程中执行的,因而报警,且线程退出失败(没有执行。由此可见,子线程的退出操作是在主线程中完成的,不仅没有报错,而且线程也成功退出了(执行了线程退出槽函数)由此可见,主线程的线程ID为0x43f4,子线程的线程ID为0x2790。解决方法:在线程外的其他线程中,调用线程的wait()方法。原因:在自己的线程中调用线程的wait()方法。
2024-08-05 22:50:54
1013
原创 Qt:关闭对话框,动画实现窗体逐渐缩小到消失
QPropertyAnimation对象,实现动画效果,逐渐缩小窗体尺寸,以及透明度;2、在对话框缩小时,要将界面中的控件都隐藏起来,并且将对话框布局的Margin修改成0。
2023-10-29 21:48:52
967
原创 Qt:删除QWidget中的所有布局和组件
3、QLayout::itemAt(int index) 可根据索引获取相应的子项;2、QLayout::count() 可获取布局内的子项数量,包括子布局和子组件;1、调用QWidget::layout()可获取组件的布局;*widget) 可将某个组件从布局中移除。
2023-10-29 19:41:38
4133
原创 QLineEdit 不显示右键菜单,以及屏蔽鼠标选中文本
鼠标右键编辑框内时,会弹出系统默认的右键菜单,很多时候我们不需要,或者想使用自己设计的菜单,常见的方法就是重写QLineEdit类,修改它的事件处理。如果屏蔽掉鼠标双击或拖动时选中编辑框内的文本,只需重写它的一些鼠标事件即可。
2023-05-20 00:12:51
1172
原创 QListWidget与QTreeWidget的用法
1、dialog.h:头文件#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <QLabel>#include <QLineEdit>#include <QTextEdit>#include <QPushButton>#include <QListWidget>#include <QTreeWidget>class Dialog
2022-05-12 00:33:28
391
原创 Qt 5.9打包后sqlite运行错误:Driver not loaded
今天打包Qt程序后,运行exe,报了一个奇葩的错误:Driver not loaded乍看之下,是数据库驱动没有加载,但我在程序调试中,Debug和Release都没问题,在网上找了一圈答案后,也没有解决我的问题。网上的答案无非两种:1、代码写的有问题;2、打包的文件夹中没有qsqlite.dll等文件,这里就不详述。折腾了半天,才发现了问题的所在:1、我的程序中,数据库文件是代码自动创建的,代码大致如下: QSqlDatabase sqlDB; sqlDB = QS
2021-12-14 18:33:38
2369
2
原创 数字范围正则表达式
软件开发中,需要限制编辑框的数字范围,网上搜了一些,要么漏洞很多,要么不完善,于是博主重新学了一些正则表达式的语法。不多废话,请看正题:1、[0,255]范围内的正则表达式:^[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|(25[0-5])$解析:这个范围IP地址中会用到,如果写成^[0-2][0-5]{2}$那就大错特错了,不仅会取000这样无意义的数值,还不能输入39、166等数字。上述表达式虽长,但是分段看就很简单,将其分成5个区间:取值范围
2021-12-13 12:04:08
8922
3
原创 qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found.This appl
今天在Linux系统卸载了Qt 5.9, 然后安装Qt 5.12, 结果运行qtcreator时,报如下错:后来查阅才知道, 是libxcb-xinerama0没有安装, 在终端输入以下命令即可解决问题:sudo apt-get install libxcb-xinerama0感谢链接中的博主:https://blog.youkuaiyun.com/u012308586/article/details/108509503...
2021-09-02 11:15:10
805
原创 Qt 版Word多文档编辑与处理(完整版)
微软的Office Word软件是一款通用的文字处理软件, 其功能非常强大, 但它是如何实现的呢? 本文怀着这样的想法, 用Qt开发出与之功能类似的文字处理软件.(当然了, 我只实现了一些基本功能, 读者们可根据本文的思路,对该软件的功能进行扩展), 请先看软件运行结果:(注: 在Linux运行Qt程序时, 只有将界面最大化, 才能在左上角看见菜单.)实现该软件的核心点:1. QMdiArea 类: 它是实现多文档操作的关键类, 通过向QMdiArea中添加子窗口,可操作多个子...
2021-08-25 16:56:02
2510
原创 Qt制作一个相册浏览工具
如何用Qt制作一个相册浏览的小程序? 程序开发思路如下:1.支持多张相片浏览,可翻页浏览,相片可从本地导入;2.相片要有放大和缩小的功能;3.相片可自动浏览,时间间隔可自定义.主要的代码如下:1.相片的导入void MainWindow::onBrowse(){ QString picFormat = tr("Images(*.png *.jpg *.jpeg *.bmp *.ico *.tif *.gif)"); QFileDialog fDlg(this, t
2021-08-19 10:34:53
693
原创 Qt模拟分子扩散与碰撞
假设某个封闭容器内有若干个分子,每个分子的颜色都不同,它们在容器内无规则的扩散,如何实现这个功能? 解决方案如下:1. 容器可视为一个QWidget对象,每个分子可用一个圆点表示,它的结构体数据如下:struct SColorCircle{ SColorCircle(QPoint pt, Qt::GlobalColor clr) : _pt(pt), _color(clr) {} QPoint _pt; int
2021-08-19 10:21:01
217
原创 C++11: 枚举类ostream
在传统的C++中,枚举类型并非类型安全,它可视为整数,不同的枚举类型可直接进行比较,且不同类型的枚举值i名称不能相同,这时常给枚举值取名带来困扰.C++11引入了枚举类(enumaration class),并使用enum class的语法进行声明. 枚举类是类型安全的,它不能被隐式转换为整数,也不能与整数进行比较,更不能对不同枚举类型的枚举值进行比较,但同一个枚举类中的枚举值可进行比较.枚举类中的枚举值不能直接通过 << 进行输出,需显式的进行类型转换,转换成整数后方可,也可通过重载
2021-08-13 14:27:51
400
原创 Qt生成二维码(源码可下载)
用Qt 开发生成二维码的工具,步骤如下:1. 下载Qt开源代码qrencode(GitHub中可搜到)2. 编写一个继承QWidget的二维码类,重写该函数:void paintEvent(QPaintEvent *event) override3.在主窗体中测试生成的二维码,测试结果如下:源码下载路径如下:https://download.youkuaiyun.com/download/ouyangxiaozi/21044215...
2021-08-13 14:00:57
433
原创 QPalette的详细使用示例
1. 功能简介:QPalette是Qt中的调色板类,它提供的setColor()函数可改变控件的颜色,其原型为:void QPalette::setColor(ColorRole acr, const QColor &acolor)其中, ColorRole是个枚举,指的是颜色主题,QPalette::Window是指背景色,QPalette::WindowText指的是前景色, QPalette::Button指的是按钮的底色...2. 实例新建一个Qt Widgets Ap
2021-07-29 10:38:13
5847
1
原创 Qt获取Linux终端命令数据
用Qt新建一个无窗体的工程后,用代码的方式创建控件和布局,左边的编辑框为Linux命令,右边的为命令的执行结果,经验证,与终端执行结果一样,代码如下:1. mainwindow.h 文件代码:#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QLabel>#include <QPlainTextEdit>#include <QPushButton>
2021-07-22 18:39:34
1979
原创 C++:自定义函数数据类型转换
主要代码如下://获取字符串的长度函数(每个汉字2个字节长度)int GetStringLength(string str){ int ret = 0; int i = 0; while (auto sss = str[i++] != '\0') { ret++; } return ret;}//double转化为字符串函数string DoubleToString(...
2018-02-08 14:16:55
1154
原创 C++:利用模板类进行若干排序算法
template class CSort{public: CSort(int nArraySize); virtual ~CSort(); void Bubble(T arr[]); //冒泡排序 void insertion(T arr[]); //插入排序 void Quick(T arr[]
2017-05-05 16:50:14
872
原创 C++:操作符重载
#include using namespace std;class Complex{public: Complex(double r = 0, double i = 0) : _real(r), _imag(i) { } double GetReal() { return _real; } double GetImag() { return
2017-05-05 13:30:26
265
Qt 版Word多文档编辑与处理(完整版)
2021-08-25
Qt 桌面数字电子钟(可拖曳)
2021-08-25
Qt相片浏览(支持导入相片,相片放大和缩小,自动浏览等功能)
2021-08-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人