qt
文章平均质量分 60
苏州-青蛙
>- -<
。
展开
-
(Qt) Qt项目的插件化
笔者之前的项目所采用的是动态库的方式让程序运行时加载DLL,最近接触的几个项目均用插件化的方式加载程序所需要的模块。一开始我也纳闷,用我浅薄的理解Qt的插件化本质还是加载的dll,只不过是可以在运行期间进行dll的加载,无需加载lib,那么这样和存粹用动态库加载区别应该不大,一些动态库自带的好处比如解耦,灵活的好处,插件化也具备,那么这两个有什么不同呢,插件化是不是还能带来纯粹动态库没有的一些好处,下面就是我自己的角度想的好处。 插件支持热插拔使应用程序的使用更加灵活,软件只需要用到的时候加载插原创 2022-07-14 14:18:56 · 2107 阅读 · 0 评论 -
Qt项目中的日志库log4qt使用
Qt项目中的日志库log4qt使用原创 2022-06-20 15:28:26 · 974 阅读 · 0 评论 -
(Qt)使用QCommandLineParser进行程序的命令行解析
在开发过程中,由于需要,有时候要对程序中的命令行进行使用,比如最近的开发任务需要用外部exe启动我们的软件,启动的时候传入一些必要的命令行参数,使我们软件启动的时候根据这些参数进行一些必要的操作,这个时候就可以使用Qt自带的QCommandLineParser这个类。Qt中是用QCommandLineOption和QCommandLineParser这两个类配合进行应用的解析。下面就直接贴出一个例子的简单使用,方便大家理解,其中涉及到一些东西也很多,长,短命令,以及多参,从最基础的用法入手,后面自己学习原创 2022-05-10 15:47:22 · 1975 阅读 · 0 评论 -
(Qt)记一次Qt安装器卡死的问题
今天想补充安装QChart,熟练的打开Qt安装目录下的安装器,发现点击安装器界面老是卡死,一脸懵逼,又把Qt卸载重装,一样的,后来百度发现是有道词典导致Qt安装器卡死,退出,就可以了。大写的服,如果没刷到那文章,我还不知道要耽误多少时间。开发过程中总会碰到各种问题。...原创 2022-02-10 12:41:59 · 1868 阅读 · 5 评论 -
(Qt)QJson解析和生成
例子分析:代码:Json文件{ "SkinColorConfig": { "text_color_type_1": "224,231,250,255", "text_color_type_2": "162, 171, 195,255", "m_bubblewin_border_color": "48, 54, 66, 255", "m_bubblewin_line_color":"54, 63, 82, 255" }}解析代码: //将一原创 2021-12-13 14:29:27 · 50 阅读 · 0 评论 -
(Qt项视图Demo)封装下链式结构(QListView)的MVC(MVD)用法
对于一些数据量小的列表我们使用QListWidget往往能满足开发的需求,但是对于大数据量的展示来说(几十万,上百万)来说的话,全部加载是一个不是很合适的方法。因此我们使用MVC,这里可能应该叫MVD(model,view,delegation)。这样做个人认为有两个好处:1.效率问题,view和delegation配合只负责从model中取显示需要的数据,因此带来高效。2.model的数据可以由不同view来显示。这里的话封装下通用QListView的通用方法(Tree和Table之后做),去原创 2021-11-24 10:34:46 · 1989 阅读 · 0 评论 -
(Qt)Qt之show()、hide()、close()、exec()、open()比较
来源:Qt 之 show,hide,setVisible,setHidden,close 等小结_1+1=10-CSDN博客 Qt之show()、hide()、close()、exec()、open()比较_毅修的专栏-CSDN博客(1)QWidget 的show()、hide()、setVisible()、setHidden() 这4个函数让人看得眼花缭乱,但是打开源代码一看,原来最终调用的只是一个函数:setVisible(bool visible)。下面是几个函数的源代码。...转载 2021-11-12 11:23:34 · 5269 阅读 · 0 评论 -
(Qt)重写QApplication的Notify()进行一些事件的提前处理
软件中有一些窗口通常需要统一管理,这个时候可以利用重写Application来用Notify进行统一管理,比如菜单的一些,切换应用程序整体消失的属性。#include "CBillfishApplication.h"#include "CAppSingleton.h"#include <QMouseEvent>#include <QWidget>#include <QEvent>#include <QCursor>#include <Q原创 2021-07-29 13:44:09 · 1713 阅读 · 0 评论 -
(Qt)正确清晰的显示SVG图案到Label中显示以及Painter画清晰的SVG
ui肯定会给一个svg图案给你,可能很小,但是由于是svg你必须要在软件中显示清晰,无论多大。下面我就给一个实际的例子。 //文件夹设置固定默认图片 //取文件夹图片 QString folder_icon_path = GetSkinResourceAbsolutePath("tree_folder_blue_close.svg"); QSvgRenderer svg_remder (folder_icon_path); ...原创 2021-07-08 13:30:51 · 5581 阅读 · 2 评论 -
(QT)托盘客户端的处理方案
主要用到了Qt-QSystemTrayIcon这个类//头文件QSystemTrayIcon* m_lpTrayIco;//cpp QMenu* m = new CTrayMenu/*new QMenu*/; //绑定菜单 QAction* s = new QAction(QString::fromWCharArray(L"显示/隐藏"), this); QAction* a = new QAction(QString::fromWCharArray(L"关原创 2021-04-12 10:45:14 · 286 阅读 · 0 评论 -
(转载)Qt适应dpi的解决方案
转载自:https://blog.csdn.net/startl/article/details/105862817QT这个地方真应该好好规整一下,规划设计的太乱了,开发者真的无所适从先说最终解决方案:使用资源qrc里添加,qt/etc/qt.conf,qt.conf中WindowsArguments=dpiawareness=0好处就是直接让windows来控制,和多数程序保持一致。如果采用QT本身的方案,显示效果比较好,但是有不少坑:比如你在代码里写死了的一些间距,就会出问题,...转载 2020-09-26 08:48:19 · 2450 阅读 · 0 评论 -
开源项目:Qt封装自绘控件库
GuitHub地址:https://github.com/ArmstrongOne/Qt-CustomControls环境:用VS2015以及qt-vs-tools-msvc2015-2.0.0插件以上版本直接编译运行--个人用Qt封装了下一些还算好看的控件--接口都还算完备--基本上一个控件一个头文件加一个实现文件。--分了一些类,现在有进度条,滑动条,仪表盘,统计图,动画,按钮,还有一些还不错的软件页面--现在量不是很多,之后遇到好看的的还会实现再添加下面贴一些图:原创 2020-08-17 16:43:52 · 2899 阅读 · 2 评论 -
2019.8.7Qt线程理解
我一直喜欢使用的方法都是Qt 的movetothread() 将对象类放入 线程 通过信号连接的槽必然是执行在线程里的。然后只有信号和槽才能实现主线程和线程的切换,比如你在主线程里直接调用放入线程里的类的槽函数,他还是执行在了主线程。然后还有一个自己理解的基本概念:跑在线程的意思是在线程中执行代码的程序,而不是说一个对象属于线程,没有对象属于线程,仅仅是跑在了线程里...原创 2020-06-30 10:31:42 · 99 阅读 · 0 评论 -
(Qt)封装下串口类QSerialPort的线程操作
串口基类-使用时请继承该类 -在子类业务逻辑,不要直接扩展该类。原则上读操作应该放入同一个线程,写操作也要放入同一个线程。这里读操作(read)和写操作(打开,关闭,write)不放在一个线程里这里因为我需要方便获取串口打开判断返回值所以打开放到主线程里,而且一般情况下写数据量不是很大,所以这里所有的写操作放到主线程,读操作处理包常规放到次线程里。如果串口读量很大,可以将所有操作放入线程里,比如用该类发信号进入线程,但是打开之类的返回值需要在异步中,通过信号通知合适对象是否打开成功。头文件.h..原创 2020-07-16 14:06:07 · 1909 阅读 · 0 评论 -
QT项视图类(QTableWidget,QListWidget,QTreeWidget)
QTableWidget刚用QT的操作:int casewidth = ui.case_Table->width(); ui.case_Table->setColumnWidth(0, (2.0 / 10.0)*casewidth); ui.case_Table->setColumnWidth(1, (2.5 / 10.0)*casewidth); ...原创 2020-07-13 15:40:39 · 371 阅读 · 1 评论 -
QTabWidget样式表设置问题
QTableWidget 去除上面标签for (int i = 0; i < ui.tabWidget->findChildren<QTabBar*>().size();i++) { ui.tabWidget->findChildren<QTabBar*>().at(i)->hide(); } //每...原创 2020-06-30 11:14:10 · 418 阅读 · 1 评论 -
VTK-VTK灰度图转为Qimage
int dim[3]; reader->GetOutput()->GetDimensions(dim); qDebug() << dim[0] << dim[1] << dim[2]; QImage m_image( dim[0], dim[...原创 2020-06-30 11:13:35 · 191 阅读 · 0 评论 -
qt初学者:布局、坐标转换、位置管理
研究了一下布局首先把控件水平 布局 或者垂直布局,用工具栏的条子分 。 各个控件比例可以看 layout属性中的layoutStretch来控制比例。最后最后,最重要的,右击空白画布选择总体布局(垂直,水平,栅格,自己选),自己思考,总归有符合的总体布局,其中可以通过留空白器和分裂器微调,这样可以满足所有的布局需求了,而且可以实现任何窗口自适应变化,其中可能要调一下控件属性中的expan...原创 2020-06-30 11:06:10 · 209 阅读 · 0 评论 -
2019.10.10重点记录文件加密以及QDataStream用法
今天要做别人一个文件加密的东西 一看很简单 但还是踩了不少的坑不说了 直接下面贴代码然后我解释 加密分两步 加密写入文件 和解密 获取信息中间用到关键的就是QDataStream,要设置版本号和大端和小端,然后写入的格式是4位的长度加数据你写 int << QString<<char 就是 int长度+int值 +QString长度+QString值+...原创 2020-06-30 10:34:06 · 391 阅读 · 0 评论 -
vtk&Qt 获取世界坐标和灰度值显示在状态栏
世界坐标 / 图片Spacing就是图片的像素坐标用到vtk&qt槽#include <vtkEventQtSlotConnect.h>//实现vtk的事件和QT槽函数的连接#include <vtkCommand.h>//vtk事件m_Connections = vtkEventQtSlotConnect::New();m_Connections-...原创 2020-06-29 17:15:13 · 343 阅读 · 0 评论 -
vtk对 camera 的操作方法如下
对 camera 的操作方法如下:vtkCamera *aCamera = vtkCamera::New();aCamera->SetViewUp (0, 0, -1);//设视角位置aCamera->SetPosition (0, 1, 0);//设观察对象位aCamera->SetFocalPoint (0, 0, 0);//设焦点aCamera->C...原创 2020-06-29 17:14:52 · 235 阅读 · 0 评论 -
应用层通信协议的问题
做了不少物联网通信上的模块,也看过了各种各样的协议解析,也学习了不少开源软件的网络交互方式,不谈那些http和其他一些封装好的处理方法,总认为tcp丢包或者包错了,那就会导致解析模块很容易卡住,比如长度位错了,你还要一直找协议头,始终找不到,群里大佬都说tcp丢包和错包不用考虑,那是硬件问题或系统问题,不要考虑。。。查了下资料tcp层有可能丢包,比如型号衰减或者网络阻塞等情况,但是这些情况与应用层无关,并且tcp有重传机制和其他安全性机制保证应用层意义上的包的连续性和完整性,所以从应用层协议的角度来原创 2020-06-10 17:27:16 · 229 阅读 · 0 评论 -
通信协议设计分析
几乎任何项目都会涉及到通信,那么通信协议的设计就显得十分关键,目前就我个人来说串口 网口为从字节流中取到正确的数据必须要开始通信协议的设计。以下转载自 原文转自:http://www.360doc.com/content/14/0915/11/1073512_409611008.shtml对于很多设备之间的通信,经常需要自己设计一套通信协议。当然此处的通信协议一般都是建立在TCP...原创 2020-06-11 10:24:04 · 716 阅读 · 0 评论 -
Qt读写txt简单版本
简单的qt读写一个txt配置文件用qt自带的方法写即可 不需要用我封装的那个winapi库 那个对要求较高的文件操作在使用。下面这个函数就是我读取一个配置文件的情况 包含了读写操作void CTLoginSetting::ReadLoginSettingFile(){ if (!QFile::exists(file_path)) { //创建默认文件...原创 2020-06-30 10:35:42 · 228 阅读 · 0 评论 -
QT开发过程中自己遇到的问题
1.QLineedit 有次透明度设成0 焦点光标始终点不上去 只要透明度稍微设置一下就好 比如rgba(0,0,0,1);原创 2020-06-04 11:51:37 · 1053 阅读 · 2 评论 -
学习曲线库:QCustomPlot
起因:QChart用了一年多感觉还不错 可能是数据量小。看了飞扬青云大佬在群里发的话 还是决定换QCustomPlot使用。 --------------------------------------------------------------------分割线--------------------------------...原创 2020-06-29 17:11:43 · 275 阅读 · 0 评论 -
Qt 事件处理(自己实验的理解)
1.父窗口和子窗口resize 和show的顺序2.当改变大小的时候原创 2020-06-30 10:35:17 · 269 阅读 · 0 评论 -
Qt 事件处理过程(转载)
它反映了包括Qt在内的GUI应用程序的消息处理模型: (1) 用户操作界面,被操作系统内核空间中的设备驱动程序感知 (2) 设备驱动程序向操作系统的用户空间的GUI应用程序发出系统消息 (3) GUI应用程序将系统消息转换为信号,进而触发槽函数 在GUI应用程序中,一个核心且关键的操作就是将系统消息转换为信号,涉及到Qt的事件处理机制: (1) Qt平台将系统底层...原创 2020-06-30 10:39:34 · 270 阅读 · 0 评论 -
QAxObject写word文档和次线程操作
不废话先贴代码 别忘了装office{ HRESULT r = OleInitialize(0); if (r != S_OK && r != S_FALSE) { qWarning("Qt: Could not initialize OLE (error %x)", (unsigned int)r); }...原创 2020-06-30 10:42:26 · 862 阅读 · 0 评论 -
C++Primer阅读之命名空间
这可以解释为什么qt程序中有那么多 namespace Ui{} 第一次是创建 第二次则是为该命名空间增加新的成员命名空间可以嵌套所以之后写个人库都可以用命名空间将类写到里面去...原创 2020-06-30 10:43:21 · 163 阅读 · 0 评论 -
Qt窗口黑边
今天做了个这个工具包界面,没什么难度 想记录一下这个黑边的做法1.黑边首先父窗口paintevent事件画10个矩形 从最外面依次往里画 a值关系具体看下面函数void RXTools::paintEvent(QPaintEvent *){ //相当于依次画10个a值递减德矩形 QPainterPath path; path.setFillRule(Qt::...原创 2019-12-16 13:34:35 · 1168 阅读 · 0 评论 -
Qt文件监控QFileSystemWatcher
原文链接:https://blog.csdn.net/liang19890820/article/details/51849252简述QFileSystemWatcher类用于提供监视文件和目录修改的接口。QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更。调用addPath()函数可以监控一个特定的文件或目录。如果需要监控多个路径,可以...转载 2020-06-30 10:46:05 · 1074 阅读 · 0 评论 -
2019.11月项目(路由器搭配设置,共享文件设置)
首先你得必须找到共享文件吧先设置这个 :https://jingyan.baidu.com/article/64d05a02f29383de55f73b2a.html如果你gpedit.msc找不到桌面新建一个cmd 输入以下命令就可以了@echo offpushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft...原创 2020-06-29 17:05:32 · 868 阅读 · 0 评论 -
软件开发模型
敏捷开发,首先把客户最关注的软件原型先做出来,交付或者上线,在实际场景中去修改弥补需求中的不足,快速修改,再次发布版本。再次上线或者交付。通过一些敏捷实践方式,细化story,可以提供更小的迭代。如此循环,直到用户(客户)满意。适用于需求不明确的项目、创新性的项目或者需要抢占市场的项目。瀑布式开发,要求明确的需求,大家按照需求一步步做好规划,在项目运作过程中严格产出各种文档,按着流程一步步走下...原创 2020-06-30 10:48:42 · 138 阅读 · 0 评论 -
QPainter中级用法
一、坐标系简介。Qt中每一个窗口都有一个坐标系,默认的,窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小。原点即为(0,0)点,然后以像素为单位增减。例如:void Dialog::paintEvent(QPaintEvent *){QPainter painter(this);painter.setBrush(Qt:...原创 2020-06-30 10:51:29 · 944 阅读 · 0 评论 -
获取子控件坐标和大小出现的问题
直接列结论 软件运行后resizeEvent能直接获取到子空间大小 但子空间坐标用QPointF a = ui.vtk_window->mapToGlobal(QPoint(0, 0));转化为全局坐标后发现是相对于桌面左上角 而不是顶级窗口左上角 需要减一下(有边框要加边框) 另外应该有更简单的方法...原创 2020-06-30 10:30:43 · 353 阅读 · 0 评论 -
QT之qwt配置
http://blog.sina.com.cn/s/blog_a6fb6cc90101gks5.html5.配置(1)将E:\QWT\lib下的qwtd.dll、qwt.dll拷贝到D:\Software\Qt\Qt5.1.0\5.1.0\msvc2010\bin下, 将qwtd.lib、qwt.lib拷贝D:\Software\Qt\Qt5.1.0\5.1.0\ms...原创 2020-06-29 17:16:02 · 279 阅读 · 0 评论 -
Qt 常用正则表达式 限制输入框的输入
"^\d+$" //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$" //正整数"^((-\d+)|(0+))$" //非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*$" //负整数"^-?\d+$" //整数"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)"^(([0-9]+\.[0-9]*[原创 2020-06-29 17:14:05 · 5899 阅读 · 1 评论 -
使用QTcpSocket的一些总结
QTcpSocket类的方法connectToHost会泄露内存,即使把调用这个方法的QTcpSocket实例delete掉,内存也不会释放!反复connectToHost会导致段错误,十分危险。必须控制connectToHost的使用次数! 连接服务器 m_tcpSocket->connectToHost(“127.0.0.1”, 9877); connected = m_t...转载 2020-06-30 10:43:49 · 377 阅读 · 0 评论 -
C++&&QT基础多线程总结
多线程比较重要的模块了可以这样理解,加锁的就是安全的,不加锁的就是不安全的。2.到底是什么意思呢?如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。好比你有两个一模一样的银行卡(账户一样,余额一样,当然现实中是没有的),假如卡上余额1000块,而...原创 2020-06-30 11:11:16 · 259 阅读 · 1 评论