
qt
Liu-Eleven
纸上得来终觉浅,绝知此事要躬行。
展开
-
Qt中如何在同一个类中共享使用一个Qtimer
例如:某个程序需要播放警告声音,同一时间只能播放一个警告声音。一共有10种警告声音,需要根据优先级来播放。每次播放间隔时间根据需求来调整。这个时候有什么好的办法呢?当你在一个类中需要多个地方使用定时器,但是又不需要为每一个操作定义一个定时器变量。因为它们之间的行为是单一的。在具体的需求实验中,经过不断调整,最终找到了一种共享定时器的方法。原创 2025-03-24 10:22:55 · 283 阅读 · 0 评论 -
使用QtCreator创建一个类的时候为什么总是加“explicit”
防止隐式转换:阻止在某些情况下编译器自动进行类型转换。确保构造函数调用的明确性:要求开发者显式地进行类型转换,避免意外的构造函数调用。提高代码的安全性和可维护性:减少了隐式转换可能导致的错误,使代码更加容易理解和调试。explicit防止构造函数被隐式调用,避免潜在的错误。它确保构造函数的调用是明确的、易于理解的。Qt 自动生成的类中加explicit是为了提高代码的安全性,避免不经意间发生隐式类型转换。原创 2024-12-10 19:41:00 · 870 阅读 · 0 评论 -
Qt之自定义动态调控是否显示日志
使用。原创 2024-12-10 16:38:58 · 588 阅读 · 0 评论 -
qt/c++中成员函数返回成员变量并且可以赋值
qt/c++获取成员变量并赋值原创 2024-10-16 18:58:38 · 265 阅读 · 0 评论 -
Qt6.6搭建WebAssembly
qt搭建webassembly环境原创 2024-03-07 18:04:20 · 775 阅读 · 0 评论 -
Window下编译qtpdfium
系统环境:windows11Qt版本:Qt5.15.2源代码路径:下载下来后,直接用MSVC2019编译器的CMake环境编译,顺利通过。但是使用Mingw编译器编译的时候,却出现了一堆错误。错误就不截图了,现在已经把坑全部填平,懒得再返回去了。接下来直接贴出要修改的地方1.修改qpdf\CMakeLists.txt#在代码set(CMAKE_DEBUG_POSTFIX d)#后面,添加下面代码if(CMAKE_COMPILER_IS_GNUCXX) set(CMAKE原创 2022-04-23 10:12:55 · 2450 阅读 · 8 评论 -
QSettings清空内容
最近写项目使用到QSettings来保存配置文件,但是有时候打开文件发现里面内容错乱,为了保证文件里的内容正确,每次更新文件都会调用clear或者remove来清理内容。但是保存以后发现错乱的信息还在,于是想到了有可能执行sync才会同步到文件。因此试了以下。发现可以清空。具体写法如下:如果只调用QSettings::clear或者settings.remove,只是清空内存中的数据。真正的要把文件清空,写法如下:void clearIconIni(){ QSettings icon原创 2022-03-26 12:58:15 · 3320 阅读 · 0 评论 -
Qt使用wxsqlite为sqlite加/解密并制作sqlite3shell工具
在嵌入式上使用QT开发用户界面时候,少不了使用数据库。但是Qt自带的sqlite3数据库是没有加密的,因此当保存一些敏感信息的时候很容易暴漏个人隐私。网上查了很多资料,此处做下总结方便大家学习。1.加密方式分类1.1)使用SQLCipher加密。1.2)使用wxSqlite加密。2.使用wxSqlite加密步骤2.1)下载并解压文件下载地址:Releases · utelle/wxsqlite3 · GitHub此处我下载的是3-4.5.1,解压后如下:由于文件众..原创 2022-03-15 12:17:46 · 2664 阅读 · 2 评论 -
Qt调用SQLCipher实现数据库加密/解密
书接上回。(1条消息) Qt 使用Sqlite3数据库加密_ 刘一儿(嵌入式)-优快云博客_qt sqlite数据库加密加密后,如何在命令行进行解密呢?SQLCipher官网API:SQLCipher API - Zetetic经过查找发现使用 如下命令可以打开数据库:PS E:\QtPro\Qt5\sqlitecipher > .\sqlite3shell.exe .\student.dbSQLite version 3.8.2 2013-12-06 14:53:30E.原创 2022-03-14 13:41:19 · 2785 阅读 · 0 评论 -
qml打印输出行号
在qml中我们调试打印信息使用console.log()方式去打印信息,但是在控制台上并不能显示该条信息具体打印的位置以及是哪个文件。如果我们项目的文件非常多,那么很难定位。那么使用Qt日志重定向功能很好的解决这个问题。1.在main.cpp中加入以下代码:#include <QFile>#include <QMutex>#include <QDateTime>QtMessageHandler gDefaultHandler = NULL;void m原创 2022-03-11 10:02:01 · 1587 阅读 · 0 评论 -
创建QML单例在项目中使用
一、创建QML单例的几种方式在我们开发项目时,一般都会单独写一个文件作为全局的配置文件。而这个文件一般都是全局只能有一个对象。因此在QML文件中,也提供了创建单例的方法。1.纯QML文件创建单例模式1.1假设有配置文件名为:Config.qml,内容如下:pragma Singleton //qml开头必须要有这一句import QtQuick 2.9QtObject { id: config objectName: "config" property原创 2022-03-08 20:33:57 · 1278 阅读 · 0 评论 -
qml插件自动生成描述文件(plugin.qmltypes)
1.什么是qmltypes文件?答:qmltypes是qml插件的解释文件,用于QtCreator语法高亮。可通过Qt提供的工 具qmlplugindump自动生成。2.在windows下编译qml插件时候,如何自动生成该文件?2.1 设置qmlplugindump工具在windows中的环境变量。1.找到qmlplugindump安装路径2.加入环境变量3.启动dos窗口,输入命令qmlplugindump验证:2.2 写生成脚本cr...原创 2022-03-05 21:08:09 · 2005 阅读 · 1 评论 -
Qt中使用条件变量控制应用退出时间
前言:场景:应用启动时候启动一个线程,线程里面隔几秒查询一个设备的状态。在关闭该软件的时候唤醒线程一起关闭。于是想到使用条件变量来做该逻辑。如下:struct timespec abstime;struct timeval now;long timeout_ms = 100; // wait time 100msgettimeofday(&now, NULL);long nsec = now.tv_usec * 1000 + (timeout_ms % 1000...原创 2021-08-24 16:49:06 · 575 阅读 · 0 评论 -
Qt之自定义ToolTip
背景:由于Qt自带的tooltip不是特别美观,于是想到自定义一个tooltip。1.自定义ToolTip类。 1.1 该类继承于QWidget,主要设置属性如下: setWindowFlag(Qt::Popup); setWindowFlag(Qt::FramelessWindowHint); setMouseTracking(true); setFocusPolicy(Qt::NoFocus); setAttribute(Qt...原创 2021-08-17 10:27:09 · 3393 阅读 · 0 评论 -
Qt中预加载宏和程序结束后清理
1.预加载:static void preRoutineMyDebugTool(){ qDebug()<<"prepare...........";}Q_COREAPP_STARTUP_FUNCTION(preRoutineMyDebugTool)运行效果:2.程序结束后清理:static void cleanup_ptr(){ qDebug()<<"clear.............";}int main(int argc.原创 2021-08-12 10:18:07 · 431 阅读 · 0 评论 -
QtCreator Debugger设置之win7篇
前提:在win7上安装了Qt5.14.2和VS2017,配置Kits的时候,总是有一个黄色的感叹号,这让有强迫症的我着实忍受不了。于是就点开看了下警告的部分,如下图:于是上网搜索window下的Debugger工具,但是好多资料都无法下载,但是功夫不负有心人,最终还是被我揪出来了,为了方便大家下载,链接再此:https://download.youkuaiyun.com/download/lsyrhz/20618339接下来是安装图解:Windebugger安装1.启动win...原创 2021-07-29 11:06:20 · 1116 阅读 · 1 评论 -
Qt信号槽传递自定义结构体
1.定义结构体并注册元对象//1.定义结构体struct Student{ int m_id; int m_age; QString m_name;};//2.注册元对象Q_DECLARE_METATYPE(Student)class MainWindow : public QMainWindow{ Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0);原创 2021-07-03 14:16:54 · 2342 阅读 · 0 评论 -
QtCreator启动警告
警告1:cl.exe" is used by qmake, but ...:-1: warning: "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30037\bin\HostX86\x64\cl.exe" is used by qmake, but "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\T原创 2021-06-28 10:59:02 · 3187 阅读 · 1 评论 -
windows下Qt自动打包脚本
在qt生成exe的目录下新建文本:autopack.bat。然后输入以下内容,保存双击。for /r "%cd%" %%i in (*.exe) do (windeployqt.exe "%%~nxi")pause原创 2021-04-22 16:32:27 · 661 阅读 · 0 评论 -
qt中xxx.pro学习
1.判断是否有该模块,有则编译,无则忽略qtHaveModule(webengine) { SUBDIRS += \ webview}2.指定依赖关系examples.depends = tools support skins qmlexport边学习,边记录...原创 2020-12-07 08:59:45 · 2080 阅读 · 0 评论 -
Qt之生成连接库
一、Qt生成动态练级库的方式1).在Linux下生成库①.在Linux下生成动态链接库在Qt工程文件中配置:TEMPLATE = lib。默认生成的动态库带软连接。如果不想带有软连接,则配置:CONFIG += plugin②.在Linux下生成静态连接库只需在 .pro文件下配置: TEMPLATE = lib CONFIG += staticlib 2).在Windows下生成库Ⅰ.使用MinGw生成库①.生成动态...原创 2020-11-20 10:03:07 · 1164 阅读 · 0 评论 -
Qt在Win10下嵌入记事本
源博客:https://www.cnblogs.com/findumars/p/8001326.html我来试试,先上一个图1.查出记事本相关信息:在Qt程序中添加查找窗体句柄代码://记得包含头文件:#include <windows.h>WId wid = (WId)FindWindow(L"Notepad", L"无标题 - 记事本");在Qt程序中嵌入窗体句柄代码: QWindow *childWindow = QWindow::fr..原创 2020-10-15 10:05:18 · 614 阅读 · 0 评论 -
关于Q_ENUMS和Q_ENUM的区别和用法
1.使用Q_ENUM1).枚举定义和Q_ENUM都在Q_OBJECT下面并且在public上面#ifndef WIDGET_H#define WIDGET_H#include <QWidget>namespace Ui {class Widget;}class Widget : public QWidget{ Q_OBJECT enum Action { Open, Save, New, Copy, Cut, Paste, Undo, Redo, D原创 2020-09-24 09:26:37 · 6036 阅读 · 0 评论 -
windows下C++监控目录变化
git仓库地址:https://github.com/shuai132/DirMonitor.git直接git clonehttps://github.com/shuai132/DirMonitor.git即可获得源码。由于我使用Qt比较多,因此稍加修改,使其成为一个单独的Qt工程。效果如下:修改部分代码:#include <winbase.h> bool isDir = [&]{ #if __WIN32 ..原创 2020-09-22 23:28:07 · 498 阅读 · 0 评论 -
Qt线程之QtConCurrent
在使用Qt创建线程的时候突发奇想,竟然想把UI显示放到子线程中去,然后让主线程去处理业务逻辑,说干就干,于是qt就报出了以下错误来告诉我这样做不可以:ASSERT failure in QWidget: "Widgets must be created in the GUI thread.", file kernel\qwidget.cpp, line 1145目前我在项目中使用线程的场景:1.线程生命周期和主进程生命周期相同,协同主进程去处理一些业务。2.线程生命周期只在处理某个业务时用原创 2020-08-05 09:32:07 · 4300 阅读 · 0 评论 -
QWidget右键弹出菜单的方式
代码如下: //设置这个,右键响应contextMenuEvent ui->widget->setContextMenuPolicy(Qt::ActionsContextMenu); //设置下面这个,发送customContextMenuRequested ui->widget->setContextMenuPolicy(Qt::CustomContextMenu);这两个设置分别对应下面两个函数:protected: voi原创 2020-07-28 17:26:25 · 1181 阅读 · 0 评论 -
windows下Qt打包软件
1.找到如下文件:E:\Project\shijue\project\templet_circuitry_split\bin_debug>windeployqt templet_circuitry_split.exeE:\Project\shijue\project\templet_circuitry_split\bin_debug\templet_circuitry_split.exe 64 bit, debug executableAdding Qt5Svg for qsvgicon原创 2020-07-18 21:08:17 · 800 阅读 · 1 评论 -
QT拖拽事件顺序问题
需求:从右边拖动一个按钮到左边,然后生成一个对应的控件。效果一:这样的效果显然不是我们想要的,于是查了下Qt的帮助文档,增加一句代码: ui->widget->layout()->setAlignment(Qt::AlignTop);效果如下:...原创 2020-07-04 18:06:41 · 1677 阅读 · 3 评论 -
Qt屏蔽qDebug打印
做项目免不了qDebug打印调试信息。随着项目的完善,于是在控制台看到到处都是qDebug的信息,这不但影响程序的效率,而且也不容易定位真正的错误信息。于是想到了QT中可以屏蔽qDebug打印调试信息,然后在项目中调试的时候用qDebug项目完结把它屏蔽掉就OK。下面是我使用宏自定义的输出格式:#ifndef OUT_FORMAT#define OUT_FORMAT "{ FILE:["&...原创 2020-03-21 09:12:28 · 1289 阅读 · 0 评论 -
QtCreator配置Cmake
1.下载并安装CMakeCMake 官网:https://cmake.org/2.QtCreator中的配置①.msvc方式②.MinGw方式随便打开一个CMake工程:编译并运行:原创 2020-03-08 22:29:24 · 4676 阅读 · 1 评论 -
使用zinnia+qml制作手写输入法
今天逛git无意间发现了一个Qt写的手写输入法,对于手写输入法早就觊觎的我当然不能放过它。git源码奉上:https://github.com/penk/qml-handwriting再来几张图镇楼接下来就是具体制作的步骤了:以下是git上readme的原始方法:InstallZinnialibrary Install QMLCanvasplugi...原创 2020-03-04 20:37:08 · 1578 阅读 · 2 评论 -
IMX6开发板显示中文
开发板搭建好以后,自己写了一个Qt的小程序,载ubuntu下运行如下:但是在开发板上运行却出了问题:正如图片所示,英文和数字可以显示,但是不显示中文。解决方法:1.修改示例程序main.cpp,修改内容如下: QFont font; font.setPointSize(16); font.setFamily("wenquanyi"); font.setBold(true);...原创 2018-03-29 13:52:53 · 1537 阅读 · 0 评论 -
Qt课程表软件
闲来无事,为了巩固自己对qt的掌握程度,就突发奇想做了一个课程表软件。此软件扩展性能良好,本人在以后会添加一些更加实用和具体的功能。这个软件是连接数据库的。所以,当需要更新课程时,不用修改程序,只需换数据库就可以。进入正题:1.下面为启动画面,为了突出课程表主题,特意为程序启动加了一个屏风,当然,这个模块很好的就实现喽,本课程表为江西师大科学技术学院12原创 2015-03-16 15:39:06 · 3200 阅读 · 2 评论 -
对于Qt中的几个渐变的认识
这是本人总结的Qt渐变的使用,仅适用初学者,也欢迎大神指出小弟的不足。原创 2014-01-14 16:25:34 · 1405 阅读 · 2 评论 -
重写QcomboBox
这是小弟做的QcomboBox异变类GComboBox。。。请大家欣赏。原创 2014-01-10 10:23:01 · 3093 阅读 · 14 评论 -
qt怎样隐藏dos窗口
最近小弟做一个日历软件,想给它添加一些功能其实就是调用一些外置程序。于是想到了system("calc")这样调用总是会出现烦人的DOS窗口,如图:出现dos窗口,很是蛋疼,于是上网查找,得到的答案也是千变万化,试了都不行。经过多次排查Qt编译器给出的错误提示,终于得到最正确的答案。1.首先要包含#include 如图2.其次是调用ShellExec原创 2013-12-25 12:19:26 · 4942 阅读 · 5 评论 -
关于Qt如何在子类中继承祖父类
Qt中如何在子类的子类中,让子孙类继承父类窗体。原创 2014-01-08 11:22:21 · 3696 阅读 · 0 评论 -
这是我用Qt做的超炫日历
里面用到了qt的视图,场景,和项,还有数据库和网络编程。这是下载地址http://download.youkuaiyun.com/detail/lsyrhz/6745247原创 2013-12-24 09:20:43 · 4449 阅读 · 0 评论 -
Qt之更换应用图标
以前自己就做过这样的事情。但是今天要又要重复,回想一下有点遗忘。现在再把它记录下来。1.自己新建一个rc文件,随便命名。在*.rc里面写下:IDI_ICON1 ICON "calendar.ico"2.在自己的*.pro文件里写下:RC_FILE = myCalendar.rc3.最原创 2013-12-18 16:29:21 · 1233 阅读 · 0 评论 -
QT编译出错in Q_INTERFACES. qobject_cast to QGraphicsItem will not work!
最近在看QT中图形视图。自己模仿着写了个小例子。由于功能需要,所以要添加信号槽,于是自己就动手添加起来。在添加的过程中遇到了许多问题,现总结如下:1.要自定义添加信号槽必须要继承QObject。2.还要添加宏Q_OBJECT在继承时需要注意,祖父类必须放在父类之前。一切准备就绪,再次编译总是出现Class CalendarItem implements the in原创 2013-12-13 11:24:02 · 4278 阅读 · 1 评论