随笔分类 -  QT

qt
摘要:Note that entering and leaving a new event loop (e.g., by opening a modal dialog) will not perform the deferred deletion; for the object to be deleted 阅读全文
posted @ 2024-11-18 02:00 MarsCactus 阅读(41) 评论(0) 推荐(0) 编辑
摘要:以下是一个使用C++和Qt框架来演示在Qt没有通过QCoreApplication::exec()或QEventLoop::exec()驱动事件分发器时,处理延迟删除的具体例子,假设我们有一个简单的自定义类,它在析构时需要执行一些清理工作,并且希望利用延迟删除机制: 1. 自定义类定义 首先创建一个 阅读全文
posted @ 2024-11-18 01:52 MarsCactus 阅读(18) 评论(0) 推荐(0) 编辑
摘要:在Qt应用程序中,可以通过以下多种方法来有效避免内存泄漏: 1. 正确使用对象的父子关系 原理:在Qt中,当一个对象设置了父对象(通过构造函数传递父对象指针或者调用setParent()方法)后,父对象会负责在自己被销毁时自动删除其子对象。例如,在创建一个QPushButton按钮并添加到QWidg 阅读全文
posted @ 2024-11-17 22:35 MarsCactus 阅读(199) 评论(0) 推荐(0) 编辑
摘要:以下是一个完整的Qt代码示例,展示了未使用 deleteLater 而直接使用 delete 导致问题的情况,该示例涉及到一个简单的多线程场景,主线程创建一个工作线程,工作线程完成任务后通知主线程,在对象删除处理不当的情况下会出现崩溃等问题。 示例代码 #include <QObject> #inc 阅读全文
posted @ 2024-11-16 12:20 MarsCactus 阅读(48) 评论(0) 推荐(0) 编辑
摘要:在Qt中创建和使用自定义控件类时,可能会遇到以下一些常见问题: 一、布局相关问题 大小调整不正确: 问题描述:自定义控件在不同的布局环境下,可能无法按照预期调整大小。例如,当将自定义控件添加到一个水平布局或垂直布局中时,它可能不会随着布局的拉伸或收缩而正确地改变自身大小。 原因分析:这通常是因为没有 阅读全文
posted @ 2024-11-10 16:09 MarsCactus 阅读(261) 评论(0) 推荐(0) 编辑
摘要:以下将以创建一个简单的为例,详细说明在Qt中创建自定义控件的步骤: 一、创建项目 首先,打开Qt Creator并创建一个新的Qt Widgets Application项目。按照向导完成项目的基本设置,比如项目名称、存储路径等。 二、创建自定义控件类 继承基础控件类: 在项目中创建一个新的C++类 阅读全文
posted @ 2024-11-10 16:01 MarsCactus 阅读(171) 评论(0) 推荐(0) 编辑
摘要:在Qt中,qRegisterMetaType函数主要用于将自定义类型注册到Qt的元对象系统(Meta-Object System)中,这具有多方面的重要作用,以下是详细解释: 1. 实现信号与槽机制对自定义类型的支持 信号与槽机制回顾: Qt的信号与槽机制是一种强大的事件处理和对象间通信的方式。当一 阅读全文
posted @ 2024-11-10 00:25 MarsCactus 阅读(507) 评论(0) 推荐(0) 编辑
摘要:在共享内存中进行线程间的同步是确保多线程程序正确运行的关键,以下是几种常见的方法: 1. 使用互斥锁(Mutex) 原理: 互斥锁用于保护共享资源,确保在同一时刻只有一个线程能够访问被锁定的共享内存区域。当一个线程想要访问共享内存时,它首先尝试获取互斥锁。如果锁已经被其他线程持有,那么该线程将被阻塞 阅读全文
posted @ 2024-11-10 00:22 MarsCactus 阅读(58) 评论(0) 推荐(0) 编辑
摘要:除了消息队列,以下这些高级技术也可用于获取线程执行结果: 1. 基于共享内存(Shared Memory)与内存映射文件(Memory-Mapped Files) 共享内存机制: 共享内存允许不同进程(包括由线程池启动的不同线程所在的进程)直接访问同一块内存区域,从而实现高效的数据共享。在获取线程执 阅读全文
posted @ 2024-11-10 00:20 MarsCactus 阅读(10) 评论(0) 推荐(0) 编辑
摘要:除了前面提到的方法,以下是一些更高级的技术可用于获取使用QThreadPool和QRunnable启动线程的执行结果: 1. 基于消息队列(Message Queue)的异步处理 设置消息队列: 可以利用第三方库(如ZeroMQ或RabbitMQ等)来设置消息队列系统。以ZeroMQ为例,首先需要在 阅读全文
posted @ 2024-11-10 00:18 MarsCactus 阅读(30) 评论(0) 推荐(0) 编辑
摘要:在Qt中,可以通过以下几种常见方式来启动线程: 1. 继承QThread类并重写run()方法 步骤一:创建自定义线程类 首先,需要从QThread类继承创建一个自定义的线程类。例如: #include <QThread> class MyThread : public QThread { Q_OB 阅读全文
posted @ 2024-11-10 00:18 MarsCactus 阅读(509) 评论(0) 推荐(0) 编辑
摘要:C++11 之前的情况 在 C++11 之前,标准并没有对静态变量在多线程环境下的初始化提供线程安全保证。这意味着如果多个线程同时访问一个未初始化的静态变量,可能会导致初始化过程多次执行或者出现数据竞争等问题。 例如,假设有一个函数包含一个静态局部变量: int getValue() { stati 阅读全文
posted @ 2024-11-09 18:02 MarsCactus 阅读(130) 评论(0) 推荐(0) 编辑
摘要:class QMetaMethodPrivate : public QMetaMethodInvoker { public: static const QMetaMethodPrivate *get(const QMetaMethod *q) { return static_cast<const Q 阅读全文
posted @ 2024-10-27 12:06 MarsCactus 阅读(20) 评论(0) 推荐(0) 编辑
摘要:bool QMetaMethod::invoke(QObject *object, Qt::ConnectionType connectionType, QGenericReturnArgument returnValue, QGenericArgument val0, QGenericArgume 阅读全文
posted @ 2024-10-27 10:01 MarsCactus 阅读(23) 评论(0) 推荐(0) 编辑
摘要:#pragma once #include <qobject.h> #include <string> using namespace std; class Person : public QObject { Q_OBJECT public: Q_INVOKABLE Person(int age, 阅读全文
posted @ 2024-10-26 18:57 MarsCactus 阅读(27) 评论(0) 推荐(0) 编辑
摘要:此图为Qt5.x中源码 此图为Qt6.x中源码 阅读全文
posted @ 2024-10-26 15:52 MarsCactus 阅读(5) 评论(0) 推荐(0) 编辑
摘要:#define QT_FOR_EACH_STATIC_TYPE(F)\ QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)\ QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)\ QT_FOR_EACH_STATIC_CORE_CLASS(F)\ Q 阅读全文
posted @ 2024-10-24 11:59 MarsCactus 阅读(8) 评论(0) 推荐(0) 编辑
摘要:https://itanium-cxx-abi.github.io/cxx-abi/abi.html#member-pointers 2.3 Member Pointers 2.3.1 Data Member Pointers The basic ABI properties of data mem 阅读全文
posted @ 2024-09-30 18:57 MarsCactus 阅读(11) 评论(0) 推荐(0) 编辑
摘要:Qt中为WindowSystemEvent事件定义了处理函数Handler,通过宏定义和模版来声明定义 QT_DEFINE_QPA_EVENT_HANDLER Matches (25 in 1 files) qwindowsysteminterface.cpp (gui\kernel) line 1 阅读全文
posted @ 2024-09-26 14:51 MarsCactus 阅读(32) 评论(0) 推荐(0) 编辑
摘要:#include "QtWidgetsApplication1.h" #include <QtWidgets/QApplication> class GlobalEventFilter : public QObject { public: virtual bool eventFilter(QObje 阅读全文
posted @ 2024-09-26 12:13 MarsCactus 阅读(7) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示