QT
文章平均质量分 51
小哈龙
一颗勇往直前的心
展开
-
QT内存管理问题
因为退出时,w 比 label 先被析构,当 w 被析构时,会删除chilren列表中的对象,也就是这儿的 label。但 label 却不是通过new分配在heap中,而是在stack中,delte stack中的东西会导致崩溃。运行正常,退出时会崩溃 ,因为label被close时,将会 delete 这儿label对象,但label对象却不是通过new分配到heap中的。由于事件队列中可能有引用该对象的地方,当deleteLater调用时,,从而确保最后释放对象时是安全的。,反倒需要多多小心了。转载 2023-08-10 15:21:28 · 132 阅读 · 0 评论 -
QMessageBox::information 自定义按钮
一.基本简介在使用QT的弹窗提示时,习惯使用QMessageBox::informationQMessageBox::questionQMessageBox::warningQMessageBox::critical一般对于按钮,是使用系统提供的默认按钮 例如:QMessageBox::Ok|QMessageBox::Cancel 等二.如果要自己定义按钮,使用自定义的按钮文字,该怎么做?答案其实很简单,以information举例,如下代码:static int in原创 2022-04-28 12:02:26 · 3330 阅读 · 0 评论 -
QString与std::string 有中文时的转换操作
一. std::string转QString1.一般情况下(不包含中文)std::string str="111";QString strQ=str.c_str();2.包含中文情况下std::string str="中文测试";QString strQ=QString::fromLocal8Bit(str.c_str())二.QString转std::string1.一般情况下(不包含中文)QString strQ="qwe";std::string str=str原创 2022-04-20 14:49:04 · 4256 阅读 · 1 评论 -
QT QTableWidget设置单元格不可编辑
本文转载自:QT QTableWidget设置单元格不可编辑 - 代码先锋网,对自己帮助很大简单记录一下解决这个问题的方法:方法1: QTableWidgetItem* pItem = ui.tablewidget->item(iRowIndex, iColIndex); //获取该单元格的pItem pItem->setFlags(Qt::ItemIsEditable);这种方法可以使单元格内容变为灰色,且不能选中单元格;用户不能编辑单元格内容,但是可以这样修改:ui.t转载 2022-04-18 10:58:06 · 6871 阅读 · 10 评论 -
QT之tableWidget删除全部行
本文转载自:https://blog.csdn.net/WMT1520/article/details/120000446错误代码如下:for(int i = 0 ; i < ui->tableWidget->rowCount(); i++)//清空列表{ ui->tableWidget->removeRow(0);}for(int i = 0 ; i < ui->tableWidget->rowCount(); i++)//清...转载 2022-04-12 16:24:57 · 6059 阅读 · 0 评论 -
QT 中控件内坐标转换为父窗口坐标或屏幕坐标
已知一个控件的相对父窗口(左上角)的坐标位置,如何获取该控件相对于屏幕(左上角)的坐标,这个问题在MFC里面存在一些函数提供转换,在QT中也存在同样功能的函数,使用起来更便捷。在QT中几乎大部分控件都是继承自QWidget类,因此几乎所有控件都可以使用QWidget类中提供的许多便捷的函数,其中坐标转换便是其中之一://以下摘自qwidget.h//Widget coordinate mappingQPoint mapToGlobal(const QPoint &) const;原创 2022-03-29 20:30:15 · 3684 阅读 · 0 评论 -
QT中QTableWidget鼠标事件捕获
本文转载自:【转】在 QTableWidget 部件上实现鼠标右键响应功能_Shining的博客-CSDN博客有的时候,我们需要有一个 QTableWidget 在某个 Widget 的内部显示数据或者操作数据。对于一些需求,我们想通过右键或者中键来实现。而 QTableWidget 自己有一个 MousePressEvent 的 event 可以用来处理这些操作。可问题是,当这个 table 放在了一个 Widget 内部的时候,再用在 Visual Stadio 里面,你就无法实现这个函数了。那,.转载 2022-03-23 16:44:37 · 5580 阅读 · 2 评论 -
Qt中用QLabel显示图片
关于QT设置图片的一些心得,转载自网络一篇博文,对自己帮助很大转载 2022-02-20 16:12:00 · 34775 阅读 · 5 评论 -
QT 中QComboBox控件鼠标事件过滤
一.问题最近在客户端程序项目中使用QComboBox时,有需求,需要过滤鼠标点击在QComboBox控件上时的鼠标点击消息,对此,我选择了事件过滤,监听QComboBox控件的所有事件,当出现点击事件时,截获,并做自己的处理,根据以前的其它控件的使用,应该是没问题的。我大概是这样使用的,(QT控件事件过滤参考:QT控件事件过滤_积累点滴,保持自我-CSDN博客)先声明需要过滤的控件myComboBox->installEventFilter(this); //this为当前控件.原创 2022-02-15 14:44:29 · 2639 阅读 · 1 评论 -
QT控件事件过滤
一.前言在使用QT开发界面项目时,经常会遇到针对某一些控件,需要做一些鼠标操作(鼠标点击在控件上,下拉框禁止鼠标滚轮等类似的一系列操作),常规手法,针对此种操作不好实现,但是这种操作尤为常用,如何处理?二.使用事件过滤实现对某个控件特定事件的响应1.声明需要监听过滤的的控件控件指针->installEventFilter(this); //this为当前控件父控件2.在控件所在UI类中重写eventFilter函数.h中声明//事件过滤bool xxx::eve原创 2022-02-14 11:07:32 · 681 阅读 · 0 评论 -
QT程序自动拷贝所需动态库批处理
一.问题开发的Qt程序在运行时会依赖QT本身的一些动态库,每次发布程序的时候都需要去从QT的安装目录下(bin)去拷贝这些依赖的动态库是很麻烦的,如果写一个批处理文件,将该批处理文件放在要发布的可执行程序目录下,直接运行批处理,自动将所需的QT依赖库拷贝过来多好。二.简单的的实现依赖库拷贝自动将所需的QT依赖库拷贝过来,QT本身存在这样的功能windeployqt.exe 为此而生,使用方法如下:windeployqt.exe 发布程序.exe 带参数运行该程序,参数为要发布的可执行原创 2022-02-11 17:37:09 · 1079 阅读 · 0 评论 -
QT表格QTableWidget在win10下纵横表头无分隔线的问题
一.问题最近在Win10 下使用QT开发界面程序,遇到了一个问题,在使用QTableWidget 表格式出现了以下问题,如图:为什么左边表头中间 每行之间没有分割线,其实上面表头下面的线默认也是没有的,是后来加上去的,这个间隔线在其它版本系统上是存在的。这个问题很早就遇见过,一直没有找到解决方法,今天在搜索资料时,偶然在网上看见了一片文章,对解决此问题帮助很大。二.导致该问题的原因为什么纵横表头会没有分隔线呢,在网上查阅了一些资料,原来是因为win10的风格如此,在其它版本系统.原创 2022-02-10 16:37:38 · 4742 阅读 · 3 评论 -
Qt 常用控件美化
在使用Qt开发界面程序时,常用控件的美化是一件繁琐的事情,收藏一些基本控件的美化样式,可以在项目开发时节省大量时间,本篇文章由此而出,收集常用的控件美化样式。一.编辑框二.下拉框三.按钮...原创 2022-02-08 17:51:01 · 3139 阅读 · 1 评论 -
在vs中进行qt桌面应用开发时,编译器堆溢出的编译错误(error C1060编译器堆内存不足)
本文转载自:在vs2019中进行qt桌面应用开发时,编译器堆溢出的编译错误(error C1060编译器堆内存不足) - 小油人 - 博客园前言:项目中遇见这种情况,刚开始以为是使用的静态或者全局变量等太多,导致堆不够用,后来发现是资源文件添加的图片太多了,我资源文件加起来一共20M左右一、错误现象二、错误原因分析1、此次错误出现的原因:当在qt资源文件中加入过多图片时(22Mb),编译文件内容过大导致2、本质原因:vs2019中编译器默认是32位的,当参与编译的转载 2021-12-31 16:43:08 · 1670 阅读 · 1 评论 -
QT 设置QDialog显示与隐藏系统按钮(最大小化等)
QT中继承自QDialog的对话框默认情况下会显示如下效果:如果想去掉或者添加系统按钮该如何处理呢(并不是每个按钮都想要),可以在代码中这样设置,设置效果是显示:标题,最小化按钮,最大化按钮,关闭按钮,那个问号帮助按钮去掉了setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint| Qt::WindowCloseButtonHint);具体每个属.原创 2021-12-23 16:30:38 · 4403 阅读 · 0 评论 -
QT之WindowFlags属性详解
原文链接:https://blog.csdn.net/xuebing1995/article/details/96478891Qt::WindowFlagsQt::Widget //是一个窗口或部件,有父窗口就是部件,没有就是窗口Qt::Window //是一个窗口,有窗口边框和标题Qt::Dialog //是一个对话框窗口Qt::Sheet //是一个窗口或部件Macintos...转载 2021-12-23 16:29:26 · 2141 阅读 · 0 评论 -
QT 控件动态效果之QPropertyAnimation
一.简介Qt有一个单独的类,封装了Qt控件的动态效果,包含各种显示,隐藏,透明等操作,熟悉控件的各种属性(Qt设计器里面的每个控件的属性都有,例如geometry)结合使用,可以做出比较绚丽的动画效果。二.QPropertyAnimationHeader: #include <QPropertyAnimation> Since: Qt 4.6 Inherits: QVariantAnimation 详细信息,可以查看QT 头文件与QT源码三.简单原创 2021-12-21 15:58:28 · 1528 阅读 · 0 评论 -
进程互斥(当前程序已运行)
实现功能,当程序已经运行时,禁止另外开启一个同样的程序,这时可以使用进程互斥实现。在windows下:#include "windows.h"#include "stdio.h"int main(){ HANDLE m_hMutex = CreateMutex(NULL, TRUE, "cplusplus_me"); DWORD dwRet = GetLastError(); if (m_hMutex) { if (ERROR_ALREADY_EXISTS == dwRet)原创 2020-07-28 17:22:14 · 309 阅读 · 0 评论 -
Qt中定时器使用的两种方法
本文转载自:Qt中定时器使用的两种方法_似水流年-CSDN博客_qt 定时器Qt中定时器的使用有两种方法,一种是使用QObject类提供的定时器,还有一种就是使用QTimer类。其精确度一般依赖于操作系统和硬件,但一般支持20ms。下面将分别介绍两种方法来使用定时器。方法一:QObject中的定时器的使用,需要用到三个函数1、 int QObject::startTimer ( int interval ) ; 这个是开启一个定时器的函数,他的参数interval是毫秒级别。当开启成功转载 2021-11-09 15:03:16 · 7424 阅读 · 0 评论 -
Qt实现简单的密码加密
本文转自:https://blog.csdn.net/weixin_43935474/article/details/93883041原作者这种思路可以学习一下QT版本:Qt 5.5.1 (MSVC 2013, 32 bit)Qt Creator版本:Qt Creator 3.5.1 (opensource)系统:win10假设有这样一个场景,一个软件的用户帐号个数很少,我们为了方便就将用户帐号和密码存放在配置文件中,但是又不能直接将密码以明文的方式写在配置文件里,需要做一个简单的加密。我转载 2021-11-05 17:38:22 · 4178 阅读 · 0 评论 -
Qt平台下使用QJson解析和构建JSON字符串
本文转载自:Qt平台下使用QJson解析和构建JSON字符串 - 知乎原作者总结的很好,受益很大,学习到了开发平台基于Qt 5.8 Windows。示例的JSON字符串和上一篇使用的是一样的。JSON解析示例包括:和风天气实时数据 心知天气实时数据 心知天气3天预报数据 城市空气质量AQI信息 全国油价信息 北京时间等。JSON的构建:简单的键值对 JSON对象作为键的值 JSON数组 JSON数组的嵌套QJson解析JSON示例JSON的解析要对照JSON字转载 2021-10-08 15:55:12 · 1135 阅读 · 0 评论 -
Qt::QWidget 无默认标题栏边框的拖拽修改大小方式
本文转载自:Qt::QWidget 无默认标题栏边框的拖拽修改大小方式 - 公子开明 - 博客园开发环境:win10+vs2015+qt5.9.1背景:开发过程中,一般很少会使用系统提供的标题栏和边框;往往都是自定义一个自己设计的方案。这时候在QWidget中需要加上flag:Qt::FramelessWindowHint(实现方式很容易百度就不再赘述)。但是这样带来的问题就是系统自带的标题栏边框提供的拖拽移动和拖拽修改窗口大小的功能被废弃掉。这样就需要自己实现一个方案来提供这个功能。实现:拖.转载 2021-09-30 13:56:55 · 1138 阅读 · 0 评论 -
Qt控件背景图片自适应
一.问题最近在使用QT控件背景图时遇见一个问题,因为接触QT时间较短,添加背景图就使用了background-image来设置背景图片,但是当背景图尺寸与控件尺寸不同时,就会出现,控件背景图显示的是多个要设置的图片,或者是没有显示完整。二.解决方法使用border-image来设置图片背景,因为border-image会自动适应控件大小,并且设置为背景图border-image如果同时指定了两个属性,那么将会使用border-image 绘制覆盖掉background-im.原创 2021-09-29 11:59:40 · 7057 阅读 · 2 评论 -
给QlineEdit创建简单的clicked 信号方式
给qlineedit建立一个clicked的方式,我归结为有3种;第一种:建立一个新类,继承父类控件,将控件里的函数进行重载,最后将返回事件的处理交会父类控件。第二种:事件过滤器。(其实我也不太懂,小编还会继续研究的,有时间会将其解释出来)第三种:以第一种的为基础,但是继承就算了。(只适合小规模的)1)建立一个小的gui项目2)在 ui 界面设立y一个qlineedit文本框3)在 .h 头文件中,加入信号机制signals: void clicked();4)...转载 2021-09-23 15:36:54 · 1490 阅读 · 0 评论 -
Qt如何给一个button,悬浮 、按下设置不同的背景图
QPushButton *pButton= new QPushButton();QString styleSheet = QString("QPushButton{background:url(%1); background-color:transparent;border: none; }" //正常 "QPushButton:hover{background:url(%2); background-color:transparent; }" //滑过 "QPush.转载 2021-09-23 13:47:57 · 1410 阅读 · 0 评论 -
Qt翻译文件(.ts)的使用
一.简介QT程序国际化操作,Qt本身支持多语言,尤其是多文件切换特别方便,使用ts文件即可,下面介绍基本使用方式,如下操作是基于VS2013 并且已安装QT VS TOOLS 插件,展示中文的翻译操作二.使用步骤1.添加翻译文件点击VS项目名称----》右键----》CreaeNew Translation File --->选择创建中文的会生成 项目名称_zh.ts 在项目目录下2.使用翻译文件2.1.Qt语言家工具 的使用双击VS项目列表下的 项目名称...原创 2021-09-10 18:50:53 · 9846 阅读 · 0 评论 -
QT tablewidget列名字对应的行与第0行之间的边框线未显示
如标题所述,我是在QT5.5版本,win10 64 为系统下遇见的这种问题,tablewidget默认没有横向列表头的底部边框。借用论坛图片,错误如下 :解决方法:需要自己在tabwidget初始化时,设置横向列表头的下边框属性信息ui.tabwidget->horizontalHeader()->setStyleSheet("border-bottom-width: 0.5px;border-style: outset;border-color: rgb(229,229.原创 2021-09-06 17:39:24 · 1853 阅读 · 1 评论 -
QTableView和QTableWidget翻页功能实现
本文转载自:http://blog.chinaunix.net/uid-25520556-id-2211406.html主要使用QTableView和QTableWidget中的三个函数实现QTableView::verticalScrollBar()->setSliderPosition(); //设置当前滑动条的位置QTableView::verticalScrollBar()->maximum(); //滑动条能移动的最大位置QTableView转载 2021-09-01 11:45:06 · 2622 阅读 · 0 评论 -
QT: QTableWidget 表格中按钮槽函数 获取表格该按钮所在的行号信息
需求是这样的,在表格中添加了按钮,通过信号槽会进行按钮点击事件。但表格中按钮的操作往往都会和该行的行号相关,一下是获取行号的方法。// 按钮点击的信号槽,正常是不会传递行号参数的connect(btn_edit,SIGNAL(clicked()),this,SLOT(create_editWidget()));// 槽函数void PageUserSystem::create_editWidget(){ // 获取按钮的指针 QPushButton *pushButto...转载 2021-08-20 18:46:29 · 3732 阅读 · 5 评论 -
QString和std::string转换乱码与sqlite存储汉字乱码
在使用sqlite存储数据时,当存入字段是汉字时,使用如下方式存储,存储在数据库的字段是可以正常显示的std::wstring wstr=_T("汉字");std::string str=ws2s(wstr); //ws2s为字符转换函数当从数据库读取数据时,保存为std::string,如果字符串包含汉字,在列表中显示时,会出现乱码现象,此时,需要将std::string正确转换为QString ,如下std::string cstring;QString qstring;.原创 2021-08-20 14:42:20 · 1066 阅读 · 0 评论 -
Qt之标准对话框(文件对话框)
一.文件对话框(单文件)//需要包含此头文件#include< QFileDialog>void Widget::on_FileButton_clicked(){ QString fileName = QFileDialog::getOpenFileName(this, tr("文件对话框!"), ...转载 2021-08-06 11:07:24 · 3798 阅读 · 0 评论 -
qt中制作添加 .ts 翻译文件
QT 中可以用其自身的工具对界面语言进行翻译,以实现支持语言的效果,这对于开发用户跨越语言区域的工具来说是一个特别实用的功能。下面介绍怎么制作和使用qt的翻译文件:一、生成.ts翻译文件(.ts是可读的翻译文件,使用简单的XML格式)启动qt的命令行工具: 开始 -> 程序-> qt4.7.0 -> qt4.7.0 commond prompt ; 在命令行窗口中,进入到工程目录 ; 利用编辑工具打开.pro文件 ,在末尾添加 TRANSLATIONS += ...转载 2021-07-30 19:05:16 · 3647 阅读 · 0 评论 -
Qt 之 QEvent
QEvent 类是所有事件类的基类,事件对象包含事件参数。Qt 的主事件循环(QCoreApplication::exec())从事件队列中获取本地窗口系统事件,将它们转化为 QEvents,然后将转换后的事件发送给 QObjects。一般来说,事件来自底层窗口系统(spontaneous() 返回 true),但也可以使用 QCoreApplication::sendEvent() 和 QCoreApplication::postEvent()(spontaneous() 返回 false)来手动转载 2021-07-26 11:57:32 · 1073 阅读 · 0 评论 -
使用VS开发QT项目时出现找不到QT头文件
vs 编译QT时 出现 找不到 QT标准头文件的错误(在装了QT for VS 插件情况下,作如下操作)解决方式:项目--》右键--》QT Projects settings-->Qt Modules-->选择依赖的模块 对于不同的头文件有可能依赖不同的模块,可以百度一下,推荐下列文章,简述了QT各个子模块qt各大模块简介...原创 2021-07-06 20:52:12 · 8764 阅读 · 0 评论 -
VS2013 + Qt 提示 There‘s no Qt version assigned to this project for platform Win32
在VS2013 配置完 Qt后,启动项目弹出提示: 原因在于, 没有给项目也设置Qt。 项目右键菜单, 选择 “Qt Project Settings” ,会显示如图的框:将最后一个 Version字段, 选择指定的Qt 版本即可。————————————————版权声明:本文为CSDN博主「花花呀123456」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/tan...转载 2021-07-06 20:04:07 · 390 阅读 · 0 评论 -
Qt基本控件及三大布局
Qt基本控件及三大布局来源: http://blog.csdn.net/a2604539133/article/details/73920696Qt基本模块一、Qt的三大布局QHBoxLayout: 水平显示布局,所有在其上面摆放的控件只能水平排列下去; QVBoxLayout: 垂直显示布局,所有在其上面摆放的控件只能垂直排列下去; QGridLayout 格子显示布局,可以按照表格的形式显示布局; 二、Qt的控件label:标签,可...转载 2021-07-06 15:10:20 · 758 阅读 · 0 评论 -
C++ ——Qt的信号和槽的详解
1、概述信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会自动被回调。这就类似观察者模式:当发生了感兴趣的事件,某一个操作就会被自动触发。(这里提一句,Qt 的信号槽使用了额外转载 2021-07-06 15:07:22 · 3314 阅读 · 0 评论 -
QT中语法说明
一、Qt 类中Q_OBJECT的作用QObject是所有Qt对象的基类。QObject是Qt模块的核心。它的最主要特征是关于对象间无缝通信的机制:信号与槽。使用connect()建立信号到槽的连接,使用disconnect()销毁连接,使用blockSignals()暂时阻塞信号以避免无限通知循环,使用connectNotify()和disconnectNotify()追踪连接。宏...转载 2019-12-24 11:28:25 · 918 阅读 · 0 评论 -
Qt鼠标键盘事件
一、QMouseEvent的详细描述首先请注意,Qt中的QMouseEvent一般只涉及鼠标左键或右键的单击、释放等操作,而对鼠标滚轮的响应则通过QWheeEvent来处理。QMouseEvent类包含了用于描述鼠标事件的参数。当在一个窗口里按住鼠标按键、或移动、或释放就会产生鼠标事件QMouseEvent。鼠标移动事件只会在按下鼠标按键的情况下才会发生,除非通过显式调用QWidg...转载 2019-12-24 11:22:34 · 1436 阅读 · 0 评论 -
Qt 维护工具MaintenanceTool.exe 使用
QT的组件管理软件并没有在开始菜单或者桌面添加快捷方式(5.9版本),也没有在代码编辑界面设置相关的选项,藏的比较深,因此我被坑了很多次(之前如果要添加组件,只能选择卸载了重装)没有对比旧没有伤害,微软visual studio2017的组件管理软件visual studio installer清晰明了visual studio installer在被坑了多次之后,在一次偶然的机会...转载 2019-02-26 10:45:30 · 3295 阅读 · 1 评论