自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 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 3286

原创 C++ 容器

1.什么是容器容器就是一些特定类型对象的集合。2.容器的分类容器可以分为顺序容器和关联容器。顺序容器:为程序员提供了控制元素存储和访问顺序的能力。这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。也就是说,顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。关联容器:关联容器是按关键字来保存和访问元素。3.容器操作的利器—迭代器3.1 什么是迭代器3.2 迭代器的种类3.3 迭代器的类型3.4 使用迭代器3.4.1 获取容器的迭代器begin()和end()返回的

2022-01-21 17:21:29 1228

原创 char *那些事儿

引子有这样一段代码:int main(){ QString str = "hello"; auto charStr = str.toStdString().data(); std::cout << charStr << " world" << std::endl;}请问输出结果是什么?答案是: world这是为什么呢?首先让我们来看下Qt的toStdString()函数的实现。其主要包含以下部分:inline std::string QString

2021-12-30 19:35:58 991

原创 c++正则表达式使用技巧

1. 提取字符串中指定的数据下面这个示例是用来提取xml文件中dds_main_id这个节点的值。 #include <iostream> #include <regex> int main() { std::string filecontent = "<xml><dds_domain_id>3</dds_domain_id></xml>"; std::regex reg("<dds_do

2021-12-28 18:21:31 213

原创 C++中浮点数的存储和进位

首先,让我们来看一段代码:C++中 printf("%.2f\n", 9.825f); printf("%.2f\n", 9.835f); printf("%.2f\n", 9.845f);或者Python中print("%.2f" % 9.825)print("%.2f" % 9.835)print("%.2f" % 9.845)上述这段代码的结果是什么呢?(C++和Python中进位方式处理是一致的,看其中一中就可以了。)结果是9.829.849.85

2021-10-15 21:51:18 977

原创 (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 2381

原创 visual studio中“无法解析的外部符号 _WinMain@16”问题处理

无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用原因及解决办法产生这个问题的真正原因是C语言运行时找不到适当的程序入口函数,如果是windows程序:1.在对应的项目中右击,选择属性(Properties);2.在属性窗口中选择C/C+±>预处理器(Preprocessor),然后在右边栏的预处理器定义(Preprocessor Definitions)中删除_CONSOLE, 添加_WINDOWS.3.在左边栏中选择:链接器(Li

2021-08-23 10:51:57 11334 3

原创 VS2015常用快捷键

F12 转到定义CTRL + F12 转到声明CTRL + - 向后定位(跳转到光标上一次的位置,针对的是所有打开的文件,而不仅仅是当前文件中)CTRL + SHIFT + - 向前定位(跳转到光标下一次的位置)F5运行调试CTRL + F5运行不调试Shift+F5: 停止调试Ctrl+Shift+F5: 重启调试F10跨过程序执行F11单步逐句执行F9: 切换断点Ctrl+F9: 启用/停止断点Ctrl+Shift+F9: 删除全部断点CTRL + F1 动态帮助F1 帮助

2021-08-12 16:04:21 1082

原创 Qt中的多线程

1 线程的基本概念通俗地来说,线程是进程中实际执行代码的最小单元,它由操作系统安排调度(何时启动、何时运行和暂停以及何时消亡)。在一个进程中,线程是实际干活的单位。因此一个进程至少得有一个线程,我们把这个线程称之为“主线程”。在Qt中,如果管理线程的线程对象被销毁时该线程仍在运行,则程序将会报告异常。所以在Qt程序中,如果退出主线程时仍有子线程在运行,程序将会报告异常。除非管理这些子线程的对象在程序退出时不会被销毁。例如:// 正常退出的程序int main(int argc, char *argv

2021-08-03 20:00:34 4748

原创 如何在QComboBox上实现多选

1. QComboBox的底层实现QComboBox底层是由QLineEdit和QComboBoxListView组成的。其中对QLineEdit和QComboBoxListView数据的管理则是通过QComboBoxPrivate类来处理。在QComboBoxPrivate中有个QComboBoxPrivateContainer* viewContainer();函数用于初始化QComboBox的view,其实现如下:QComboBoxPrivateContainer* QComboBoxPrivat

2021-07-27 11:15:05 4334 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 1882

原创 QItemDelegate的用法

如果需要向QTableView这样继承于QAbstractItemView的控件中添加控件,有以下两种方法:使用QAbstractItemView的setIndexWidget方法向指定的位置添加一个控件。这个控件是始终显示的。使用QAbstractItemView的setItemDelegateForColumn、setItemDelegateForLow方法,向指定的列或行添加一个delegate。这个delegate是一个QItemDelegate对象、或是QItemDelegate的子类对象。

2021-06-30 15:04:29 5550 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 4530 1

原创 qss语法介绍

1.选择器选择器举例说明通配符选择器*匹配任意widget类型选择器QPushButton匹配QPushButton及其子类的实例属性选择器QPushButton[flat=“false”]匹配属性flat是false的QPushButton实例。其中的属性可以是任何取值支持 QVariant::toString() 的字段。而对属性的取值关系可以是=也可以是~=class选择器.QPushButton匹配QPushButton实例。不包括子类的实例

2021-06-30 15:02:16 232

原创 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 919

原创 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 1701

原创 Qt中信号与槽的连接方式

信号与槽的连接是通过QObject::connect函数来实现的,其原型如下:````//QObject::connect函数有多个原型,这里只列举其中一种[static]template<typenamePointerToMemberFunction>QMetaObject::ConnectionQObject::connect(constQObject*sender,PointerToMemberFunctionsignal,constQObject*r...

2021-06-30 14:32:37 1481

原创 C++/Qt调用python

1. 安装Python环境 去python官网https://www.python.org/

2021-05-30 10:44:35 2602 1

原创 C++字符数组与字符指针在运算时的区别

char *strPtr = &amp;amp;quot;HELLO &amp;amp;quot;;char str[] = &amp;amp;quot;HELLO &amp;amp;quot;;*(strPtr + 1) = ‘B’; // 出错*(str + 1) = ‘B’; // 正常执行原因分析如下:“HELLO”在内存中的存储形式:冒号前面是内存的地址,后面存放的是具体内容。指针变量strPtr在内存中的存储形式:(前面是内存的地址)

2019-02-16 14:55:52 190

multicombo.zip

基于QComboBox实现的可多选的下拉控件

2021-07-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除