![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
QT
文章平均质量分 56
QT知识点
云中飞鸿--张*峰
这个作者很懒,什么都没留下…
展开
-
setObjectName和setText的主要区别
方法用于设置对象(widget)的对象名。例如,将复选框对象的对象名设置为"checkBox_4",这样可以通过对象名来引用和操作这个复选框。总结来说,setObjectName设置对象名用于标识和查找对象,而setText设置对象的文本内容用于显示相应的文本。这两个方法在不同的方面发挥作用,setObjectName用于对象的标识,setText用于对象的文本内容的设置1。它用于设置对象的文本显示内容,如将复选框的文本内容设置为"库存管理",并通过翻译函数进行文本翻译。原创 2024-07-26 14:24:57 · 208 阅读 · 0 评论 -
setstylesheet详解
在setstylesheet中,我们可以通过设置控件的palette属性,来改变控件的颜色。2、在这个例子中,我们定义了一个伪类:hover,当用户将鼠标悬停在QPushButton上时,将其背景色设置为红色,并将文字颜色设置为白色。2、与传统的编程方式相比,使用样式表可以使UI样式更容易维护和修改,因为我们可以将UI控件的样式从UI定义中分离出来,并将样式表嵌入到应用程序中。3、在这个例子中,我们为QLabel控件指定了“微软雅黑”字体,也可以在样式表中设置其他字体,如宋体、黑体等。转载 2024-07-26 13:35:51 · 2 阅读 · 0 评论 -
QMouseEvent事件中的:局部坐标pos()和全局坐标globalpos()
1.重新实现QWidget::contextMenuEvent()函数,创建一个QMenu窗口部件,在其中添加所期望的那些动作,并用再对该窗口调用exec()函数。默认情况下,mouseMoveEvent响应你按下鼠标的某个键(拖动,但不局限于左键拖动)的鼠标移动。所以p的值没变,但相对于桌面我们点的地方已经变了,只是相对窗口的坐标p一直是(1000,0),所以pos是相对窗口的。局部坐标(pos())即是相对当前active widget的坐标,左上角坐标为(0, 0)。//menu在头文件声明。转载 2024-07-25 16:38:15 · 5 阅读 · 0 评论 -
信号槽的连接
连接信号。原创 2024-07-25 14:54:04 · 95 阅读 · 0 评论 -
窗口通过dragEnterEvent和dropEvent拖拽操作 导入文件
原文链接:https://blog.csdn.net/weixin_38734534/article/details/132234449。dragEnterEvent函数对拖动的文件进行过滤,如果不符合过滤条件按将无法拖拽进入窗口。【QT】窗口通过dragEnterEvent和dropEvent拖拽导入文件。dropEvent函数为拖进来后放下的事件,放入窗口后继续后续的处理。在界面的构造函数中设置接受拖拽放置文件。转载 2024-07-23 14:51:20 · 11 阅读 · 0 评论 -
Qt 的 d_ptr (d-pointer) 和 q_ptr (q-pointer)解析;Q_D和Q_Q指针
一方面,Qt在公类中定义了一个指针d_ptr指向私类,在宏Q_DECLARE_PRIVATE中定义了一个函数获取这个指针,用宏Q_D将这个指针重新命名为d,以便于访问私类对象。另一方面,Qt在私类中定义了一个指针q_ptr指向公类,在宏Q_DECLARE_PUBLIC中定义了一个函数获取这个指针,用宏Q_Q将这个指针重新命名为q,以便于访问公类对象。此时,就需要用到Qt定义的4个宏:Q_DECLARE_PRIVATE与Q_DECLARE_PUBLIC、Q_D和Q_Q。Qt中大量使用Q_D和Q_Q。原创 2024-06-02 19:34:17 · 997 阅读 · 0 评论 -
QVariant
QVariant 可以保存很多Qt的数据类型,包括QBrush、QColor、QCursor、QDateTime、QFont、QKeySequence、 QPalette、QPen、QPixmap、QPoint、QRect、QRegion、QSize和QString,并且还有C++基本类型,如 int、float等。当您需要存储不同类型的数据时,可以使用QVariant。QVariant是Qt中一个强大的变体类,提供了一种通用的方式来存储Qt对象及其他类的值,可以以类似于指针的方式存储任意类型的值。原创 2024-05-15 13:44:08 · 906 阅读 · 0 评论 -
Qt Tab键切换焦点顺序:setTabOrder()
原文链接:https://blog.csdn.net/wzz953200463/article/details/124110142。焦点先在ui->lineEdit上,当按下Tab键时,焦点跑到ui->lineEdit_2上。按照设定顺序依次向后!原创 2024-05-11 13:23:13 · 340 阅读 · 0 评论 -
Qt 中 :deleteLater 总结
deleteLater 依赖于事件循环,调用 deleteLater 后本质是发送了一个 DeferrerDelete 事件,在事件循环处理中把对象删除。②.代码示例。原创 2024-03-31 12:07:21 · 1016 阅读 · 0 评论 -
Qt:常见的exec()函数
作用是开启一个循环,执行一个事件,相当于while(1)和for(;),相对于的种植事件的方法是quit(),exec()内部会执行一个任务队列,对所以已经排队的任务依次执行。类似于while(1)嵌套while(1),exec()同样可以嵌套,不同的是,部件的exec()继承了主界面的exec()很大一部分操作,所以界面不会因为内部嵌套exec()而卡死。使用示例:使用临时变量实现的dialog,不能保持模态属性,可以使用事件循环实现模态。那么,这些exec()的作用是什么呢?函数在Qt中是:用于。原创 2024-03-31 11:51:15 · 896 阅读 · 0 评论 -
QT:如何在程序密集响应时,界面不会卡住?
如果在处理一个特定事件上耗费的事件过多,那么用户界面将变得无法响应。例如,在应用程序把一个文件保存到磁盘的过程中,直到文件保存完毕,才会处理那些由窗口系统产生的事件;实际上,QApplication::processEvents()就是一个不停调用processEvent()函数的while循环。使用这个方法的时候存在一个潜在的问题:应用程序还在执行的时候,就关闭了主窗口或者点击了其他响应,会产生预料不到的后果。操作(或任意其他耗时的操作),这样的话,在保存文件的时候,应用程序的用户界面仍可以保持响应。原创 2024-03-30 20:41:20 · 470 阅读 · 0 评论 -
QT - 日志:qDebug/qInfo/qWarning/qCritical
在 Qt 中,信息输出机制用于在程序运行时输出各种信息,包括调试信息、提示信息、警告信息和错误信息等。qDebug:最常用的信息输出机制,用于输出各种调试信息,例如变量的值、函数的返回值和对象的状态等。可以通过在代码中添加 qDebug() 语句来输出信息。qInfo:用于输出提示信息,例如程序启动信息和操作成功信息等。可以通过在代码中添加 qInfo() 语句来输出信息。qWarning:用于输出警告信息,例如一些异常但不致命的错误信息。可以通过在代码中添加 qWarning() 语句来输出信息。原创 2024-03-30 13:34:09 · 1593 阅读 · 0 评论 -
Qt定时器类QTimer
2. 在大多数情况下,建议将定时器连接到QObject::startTimer()函数,并在哪里实现`timerEvent()`事件,这种方式能够避免多个计时器事件同时达到时可能引起的不稳定现象。要使用它,只需创建一个QTimer类对象,然后调用其 start() 函数开启定时器,此后QTimer对象就会周期性的发出 timeout() 信号。4. 如果QTimer的间隔设置过小,也可能会出现定时器的不稳定性,所以在应用程序需要精细定时的情况下,应小心使用QTimer。//每间隔一秒向控制台发送一条信息。原创 2024-03-28 16:04:07 · 761 阅读 · 0 评论 -
Qt智能指针--QScopedPointer
QScopedPointer和C++中的智能指针std::unique_ptr其概念是一样的,它包装了new操作符在堆上分配的动态对象,能够保证动态创建的对象在任何时候都可以被正确地删除。但它有更严格的所有权,并且不能转让,一旦获取了对象的管理权,你就无法再从它那里取回来。而使用T *QScopedPointer::take()也是返回对象指针,但QScopedPointer不再拥有对象所有权,而是转移到调用这个函数的caller,同时QScopePointer对象指针置为NULL。原创 2024-03-26 15:38:16 · 459 阅读 · 0 评论 -
QDialog的成员函数exec() 的返回值
如果希望在按钮按下后让QDialog::exec()返回QDialog::Accepted或QDialog::Rejected,可以使用QDialog::accept()和QDialog::reject()函数。在这个示例中,当用户点击“登录”按钮时,如果用户输入有效,则调用accept()函数,让QDialog::exec()返回QDialog::Accepted。否则,调用reject()函数,让QDialog::exec()返回QDialog::Rejected。// 处理用户点击了取消按钮的逻辑。原创 2024-03-21 10:01:10 · 763 阅读 · 0 评论 -
QLibrary:加载动态库
项目中需要对操纵手柄进行读取,在网上找了几篇博客,基本都是依赖winmm.lib,但其中一篇直接加载它的动态库,从里面把函数解析出来,虽然麻烦,但还是眼前一亮,竟然可以这么做!一般只有对某个dll非常熟悉,知道dll中包含哪些函数、函数参数个数及类型、返回值类型才使用这种方式加载并调用函数,否则,还是使用头文件+lib的方式调用函数。由于不太熟悉typedef的这种操作,一开始没看懂,后来查了下,这是使用typedef定义的函数指针,并简单整理了这篇文章。,通过resolve进行解析,resolve。原创 2024-03-17 19:41:41 · 697 阅读 · 0 评论 -
VS2019加QT5.14中Please assign a Qt installation in ‘Qt Project Settings‘.问题的解决
机器上装有Qt5.12.9和Qt5.12.2,以及Qt5.7,因为不同的工程使用的Qt不一样,所以工程中Qt版本没有匹配,我里工程使用Qt5.7。选择后会弹出如下窗体,选择编译机器版本msvc2015 64即可(如果是单纯的qt项目,可以直接选择出现的自己qt版本)如果上述修改后,问题仍然没有解决。那么先将Qt Versions的名称删掉,之后重新命名一个不同的名称!一般是直接将工程复制到另一台电脑上所导致,系统可能默认不选择使用的qt版本。右键工程——qt——convert project to。原创 2024-03-17 14:03:36 · 519 阅读 · 0 评论 -
Win7 VS2015+Qt5.9 编译出现MSB3758 MSB4036 NMAKE : fatal error等各种错误问题记录
解决方式:首先升级qt-vsaddin到支持VS2015的最后一个版本qt-vsaddin-msvc2015-2.4.3,然后升级.NET Framework到4.7及以上,这里用的是4.7.2,参考原文链接:https://blog.csdn.net/xinhuahappy/article/details/108645112。3.1 升级qt-vsaddin,下载qt-vsaddin-msvc2015-2.4.3。1、第一种错误(error MSB3758、error MSB4036)原创 2024-03-17 13:53:14 · 390 阅读 · 0 评论 -
QT中connect()的参数5:Qt::DirectConnection、Qt::QueuedConnection区别
Qt::BlockingQueuedConnection:槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。Qt::QueuedConnection:槽函数在控制回到接收者所在线程的事件循环时被调用,槽函数运行于信号接收者所在线程。发送信号之后,槽函数不会立刻被调用,等到接收者的当前函数执行完,进入事件循环之后,槽函数才会被调用。Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。原创 2024-03-11 15:39:18 · 918 阅读 · 0 评论 -
QSettings
用户通常希望应用程序能够记住其跨会话的设置(窗口大小和位置、选项等)。此信息通常存储在 Windows 上的系统注册表中,以及 macOS 和 iOS 上的属性列表文件中。创建 QSettings 对象时,可传递公司或组织的名称以及应用程序的名称。QSettings 的 API 是基于 QVariant 的,可以让用户便捷地保存大多数基于值的类型,例如 QString、QRect 和 QImage。QSettings 是对这些技术的抽象,使用户能够以可移植的方式保存和恢复应用程序设置。原创 2024-03-11 14:51:48 · 351 阅读 · 0 评论 -
QT: 获取CPU序列号、硬盘序列号、主板序列号 (采用wmic命令)
很强大,在win10上系统上wmic命令被powershell的“ help Get-WmiObject ”代替,但是wmic 命令还是正常可以使用的。创建新进程: wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"通过wmic 命令获取CPU序列号、硬盘序列号、主板序列号、CPU名称等信息。查询cpu序列号: wmic cpu get processorid。查看cpu详细信息: wmic cpu list brief。原创 2024-03-11 14:21:55 · 1057 阅读 · 0 评论 -
QT 对话框
二、原创 2024-02-04 16:49:20 · 241 阅读 · 0 评论 -
QT VS Tools插件安装后:无法在QT Version中添加msvc(添加后重新打开就消失了!)
原因是:当前的VS版本 和 QT VS Tools插件版本 不匹配。比如我在VS2015中按照2.7.2版本QT VS Tools,均无法正常添加msvc(添加后重新打开就消失了!=》下载尝试后,发现2.4.3版本的QT VS Tools可以正常添加msvc;原创 2023-12-21 16:15:43 · 560 阅读 · 0 评论 -
Qt VS Tools打开.pro文件:弹出“未将对象引用设置到对象的实例”
原创 2023-12-21 16:10:42 · 661 阅读 · 0 评论 -
QT中常见的deleteLater,和delete有什么不同?
合理的利用”delete“可以有效减少应用对内存的消耗。但是delete的不合理使用常常导致应用crash。而”deleteLater()“可以更好的规避风险, 降低崩溃。原创 2023-11-27 15:45:18 · 318 阅读 · 0 评论 -
QT中:会发现new的对象,有时候不需要delete的原因
结论:如果是从QObject创建的对象, 则只要顶层的父对象确保能正确delete就不用担心内存泄漏的问题;子对象析构时会从父对象的对象树中把自己移除, 所以就算我们先delete了自己new的对象, 再delete父对象也没问题;但是, 如果先delete父对象, 然后又delete子对象就会出问题, 因为delete父对象时子对象已经被析构;父对象析构时会delete所有的子对象, 所以我们new的子对象就不用手动delete了, 也不会内存泄漏;QObject维护了一个对象树, 所有。原创 2023-11-23 16:44:29 · 415 阅读 · 0 评论 -
QTableWidget中cell 和 item区别
通过调用 itemClicked()信号函数和cellClick()信号函数来看看点击“cell相当于一个容器,如箱子。里面不管有没有东西,cell都在那里。,即cell箱子中所放置的东西,即实实在在的东西。2.item:item是某行某列单元格中的。1.cell:某行某列中。原创 2023-10-13 10:05:01 · 442 阅读 · 0 评论 -
布局--QT Designer
再将需要布局的控件拖入到红色的框中,也就是Horizontal Layout控件中。使用方式是先把布局控件拖入界面中,之后再把其它需要的控件拖入到布局控件中,则这些控件就会自动调整为相应的布局。Form Layout:表单布局,控件以两列的形式布局在表单中,其中左列包含标签,右列包含输入控件。Grid Layout:网格布局或栅格布局,将页面上的控件按照网格的样式分布;等等,为此Qt为界面设计提供了基本布局功能,使用基本布局可以使组件。layoutName :布局名(所使用的布局管理器的名称)原创 2023-10-12 17:34:53 · 1617 阅读 · 0 评论 -
QT 中文乱码
在.cpp文件上方写头文件处,输入#pragma execution_character_set(“utf-8”)这行代码即可正常显示运行界面中的汉字。原创 2023-10-10 10:21:02 · 33 阅读 · 0 评论 -
QPainterPath
QPainterPath原创 2023-08-27 16:40:18 · 382 阅读 · 0 评论 -
使用VS2015打开.pro文件后,编译报错
2. 在Chart项目上,右键打开属性页。在当前页面中Configuration properties->General->Target Platform version中设置自己的平台版本。1.右键点击 Solution上,在弹出的框中点击“Retarget solution”原创 2023-08-19 17:36:42 · 403 阅读 · 0 评论 -
VS2015打开Qt的pro项目文件 报错
找到本机安装的QT路径,找到“msvc-version.conf”文件,用记事本打开, 在其中添加版本“QMAKE_MSC_VER = 1900”保存即可。QT报错:Project ERROR: msvc-version.conf loaded but QMAKE_MSC_VER isn‘t set。原创 2023-08-19 17:14:51 · 884 阅读 · 0 评论 -
Qt中的 QIODevice类(包含:随机访问、顺序访问设备)
在访问设备之前,必须调用open来设置正确的OpenMode(打开模式)。QIODevice用于对输入输出设备进行管理,是Qt中所有I/O设备的基接口类。QIODevice::Truncate 以重写的方式打开,在写入新的数据时会将游标设置在文件开头。QIODevice::Append 以追加模式打开,新增加的内容将被追加到文件末尾。设备,QTcpSocket(网络通信)和QProcess(进程)是顺序设备的例子。设备,QFile(文件)和QBuffer(缓存)是随机访问设备的例子。原创 2023-07-24 14:35:18 · 762 阅读 · 0 评论 -
qt中的toUtf8, toLatin1, Local8bit, toUcs4
2、QString内部可能是使用unicode字符集来存储文字。具体输出的时候,就可以输出该文字对应的unicode, ucs4, utf8, gb18030的编码。是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。使用qtcreator创建main.cpp,它默认代码里的汉字使用utf8字符集。gb18030字符集兼容了gbk字符集,以两个字节表示一个文字。unicode字符集以2个或以上的字节表示一个汉字。转载 2023-07-23 17:56:34 · 2138 阅读 · 0 评论 -
QT占位符 %n+arg()、QString的格式化arg(补零/进制转换)
1、QMessageBox::warning(this, tr("查找"), tr("找不到%1").arg(str));,达到在QMessageBox弹出框中输出变量的目的。,QMessageBox显示时,arg中的变量值。=》%n和arg()按顺序一一对应。原创 2023-07-23 11:54:15 · 1623 阅读 · 0 评论 -
QT中的& 和 tr(“字符串“)
原来,tr()函数是定义在QObject里面的,所有使用了Q_OBJECT宏的类都自动具有tr()的函数。2、有的时候,我们会有这种需求,想在按钮上或别的控件上以包括字符'&'为显示名如"Cancel&Exit",这样字符串中的'&'需要对其进行转义,Qt的编译器会将字符'&'后的'C'在显示时下方多一下划线,表明'C'为该按钮的快捷键,通过"Alt+c"操作来实现对pushButton的点击。通常我们会想到使用"/"来实现,试过发现不行,后来,直接使用'&'来转义没想到出现了想要的效果。转载 2023-07-22 22:06:41 · 978 阅读 · 0 评论 -
qt creator 无法切换中英文
在保存编码后,再点“编辑”->“Select Encoding”,下拉重新选择“UTF-8”,然后点击菜单中“编辑”-“Select Encoding”,下拉查看发现有“UTF-8”了,点击“Select Encoding",一般选择第一项“System”,然后点“按编码重新载入”(一定不要点按编码载入,要先保存UTF-8格式的编码文件,否则重新载入也会提示编码出错。虽然能编辑代码但仍不能切换中英文输入,此时,应下拉查看应该没有“UTF-8”选项,没有的话就选择“GB2312",然后点“按编码重新载入”转载 2023-07-22 18:17:43 · 408 阅读 · 0 评论 -
Qt Creator mainwindow.obj:-1: error: LNK2019
mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall mynotedig::mynotedig(class QWidget *)" (?0mynotedig@@QAE@PAVQWidget@@@Z),该符号在函数 "public: void __thiscall MainWindow::mynoteabout(void)" (?可能原因1:请先把已经存在的debug和release文件夹删除,重新编译,看会不会再出现这个问题;原创 2023-07-21 14:15:25 · 526 阅读 · 0 评论 -
ui_mainwindow.h 在哪里
QT Creator打开.pro项目后,找不到ui_mainwindow.h,那么ui_mainwindow.h文件在哪里呢?中的setupUi()函数位于ui_mainwindow.h文件中;2.ui_mainwindow.h位于项目的Debug文件夹内。原创 2023-07-21 11:24:39 · 1102 阅读 · 0 评论 -
为何有时候 找不到signal和slot的显示连接(connectSlotsByName),却能正常连接信号和槽呢?
在查看Qt一些项目的时候,代码中竟然找不到signal和slot的连接。假设我们的对象有一个类型为QPushButton的子对象,对象名为button1。2、如果同名,connectSlotsByName只会给其中一个建立缺省的信号槽的连接。在ui.widget.h文件中将会为每一个信号/槽建立connect;如果对象本身具有正确设置的对象名称,则其自身的信号也将连接到其各自的插槽。在widget.cpp文件中手动创建connect函数;在widget.h文件中手动创建槽函数;在界面组件上右键->转到槽;原创 2023-07-21 11:05:58 · 374 阅读 · 0 评论