Qt
文章平均质量分 67
玉心
这个作者很懒,什么都没留下…
展开
-
Qt中清除layout
static void clearLayout(QLayout *layout){ if (nullptr == layout) { return; } QLayoutItem * child = layout->takeAt(0); while(child) { QLayout * subLayout = child->layout(); if (nullptr == subLayout)原创 2022-02-17 14:25:21 · 3473 阅读 · 0 评论 -
C++ 容器
1.什么是容器容器就是一些特定类型对象的集合。2.容器的分类容器可以分为顺序容器和关联容器。顺序容器:为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。也就是说,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。关联容器:关联容器是按关键字来保存和访问元素。3.容器操作的利器—迭代器3.1 什么是迭代器3.2 迭代器的种类3.3 迭代器的类型3.4 使用迭代器3.4.1 获取容器的迭代器begin()和end()返回的原创 2022-01-21 17:21:29 · 1291 阅读 · 0 评论 -
(Parent is QSerialPort(0x4ab1ab0), parent‘s thread is QThread(0xbe3860)......问题解决办法
原因:在主线程中创建了QSerialPort对象在子线程中调用,或者在子线程中创建然后在主线程中调用了。1.对于继承QThread重写run函数的情况往往容易在run外部定义QSerialport *port = new QSerialport()对象,然后在run中调用port->readAll()等函数,然而根据QThread的特性,只有run函数才运行在新的子线程中,所以这里就跨线程调用了 QSerialport对象,会出现上述报错。示例代码如下:class SerialThread :原创 2021-09-03 11:03:10 · 2734 阅读 · 0 评论 -
Qt中的多线程
1 线程的基本概念通俗地来说,线程是进程中实际执行代码的最小单元,它由操作系统安排调度(何时启动、何时运行和暂停以及何时消亡)。在一个进程中,线程是实际干活的单位。因此一个进程至少得有一个线程,我们把这个线程称之为“主线程”。在Qt中,如果管理线程的线程对象被销毁时该线程仍在运行,则程序将会报告异常。所以在Qt程序中,如果退出主线程时仍有子线程在运行,程序将会报告异常。除非管理这些子线程的对象在程序退出时不会被销毁。例如:// 正常退出的程序int main(int argc, char *argv原创 2021-08-03 20:00:34 · 4905 阅读 · 0 评论 -
如何在QComboBox上实现多选
1. QComboBox的底层实现QComboBox底层是由QLineEdit和QComboBoxListView组成的。其中对QLineEdit和QComboBoxListView数据的管理则是通过QComboBoxPrivate类来处理。在QComboBoxPrivate中有个QComboBoxPrivateContainer* viewContainer();函数用于初始化QComboBox的view,其实现如下:QComboBoxPrivateContainer* QComboBoxPrivat原创 2021-07-27 11:15:05 · 4690 阅读 · 1 评论 -
Qt中使用QNetworkAccessManager发送get请求
1.异步请求/** * @brief 异步方式的get请求 * @param apiPath http请求路径 * @param callback 请求回调处理 * @param msec 超时时间,单位毫秒 * @param contentType 请求头中的content-type */void get(const QString &apiPath, std::function<void(const QByteArray &data)> callback原创 2021-07-01 16:03:20 · 2026 阅读 · 0 评论 -
QItemDelegate的用法
如果需要向QTableView这样继承于QAbstractItemView的控件中添加控件,有以下两种方法:使用QAbstractItemView的setIndexWidget方法向指定的位置添加一个控件。这个控件是始终显示的。使用QAbstractItemView的setItemDelegateForColumn、setItemDelegateForLow方法,向指定的列或行添加一个delegate。这个delegate是一个QItemDelegate对象、或是QItemDelegate的子类对象。原创 2021-06-30 15:04:29 · 5881 阅读 · 1 评论 -
QThread的用法
QThread中含有一个run()函数,它是线程的入口点。其在QThread类中的声明如下:protected: virtual void run();所以不能直接调用run()来启动线程,而是通过调用QThread的start()方法来启动线程。当调用来start()后,run()就会被执行。QThread类中对run()的默认实现只是在函数体内调用了exec()函数而已,所以要让子线程完成特定的功能,需要通过继承QThread,然后重新实现run()来完成。或者也可以自定义一个对象,然后将原创 2021-06-30 15:03:31 · 4719 阅读 · 1 评论 -
qss语法介绍
1.选择器选择器举例说明通配符选择器*匹配任意widget类型选择器QPushButton匹配QPushButton及其子类的实例属性选择器QPushButton[flat=“false”]匹配属性flat是false的QPushButton实例。其中的属性可以是任何取值支持 QVariant::toString() 的字段。而对属性的取值关系可以是=也可以是~=class选择器.QPushButton匹配QPushButton实例。不包括子类的实例原创 2021-06-30 15:02:16 · 271 阅读 · 0 评论 -
qt creator项目文件的配置解析(部分配置)
使用#来注释一行。指定平台相关的配置。可使用win32、unix、android、macx等。用法如下:win32:INCLUDEPATH += "C:/mylibs/extra headers"unix:INCLUDEPATH += "/home/user/extra headers"或者win32{ # 这里的{不能换到下一行 Debug:LIBS += -L../../../lib/Debug LIBS += Config.lib}unix{ gcc:..原创 2021-06-30 15:00:45 · 968 阅读 · 0 评论 -
Qt中的对象树
qt中使用对象树的方式来管理对象。所谓对象树就是对象与对象之间存在树状关系。一个父对象可以含有多个子对象,但是一个子对象只能含有一个父对象。当父对象析构时,会自动析构其所含有当所有子对象。如:class Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr, QString name="") :QWidget(parent),m_name(name){} ~Widget()原创 2021-06-30 14:57:36 · 1791 阅读 · 0 评论 -
Qt中信号与槽的连接方式
信号与槽的连接是通过QObject::connect函数来实现的,其原型如下:````//QObject::connect函数有多个原型,这里只列举其中一种[static]template<typenamePointerToMemberFunction>QMetaObject::ConnectionQObject::connect(constQObject*sender,PointerToMemberFunctionsignal,constQObject*r...原创 2021-06-30 14:32:37 · 1587 阅读 · 0 评论