问题标签 [qobject]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1445 浏览

c++ - Qt 插件中的 QObject 工厂(非创建者)

我开始对我的问题感到非常紧张,我会尝试描述我的需求,希望有人理解。想象一下,我有一个项目,它生成一个可执行文件和一些插件(运行时加载的库)。该可执行文件是某种守护进程/服务,它在一开始就寻找合适的插件。所以这些插件应该提供一些抽象的通信层。我查看了 Qt Doc,发现 QPluginLoader 类应该提供从 .so 加载的接口,但接口不能有信号/插槽,必须是纯虚拟的。所以我在想一些会返回基于 QObject 的对象......

!!!请不要害怕,它只有 2 个接口和 2 个实现 :)

我的项目布局和内容:

./Daemon/Interfaces/PluginInterface.h

./Daemon/Interfaces/ProtocolInterface.h

./Daemon/ProtocolHander.cpp(&h) <- 只是插件加载和一些逻辑

./守护进程.pro

./Plugins/Dummy/DummyPluginInterface.h

./Plugins/Dummy/DummyPluginInterface.cpp

./Plugins/Dummy/DummyProtocolInterface.h

./Plugins/Dummy/DummyProtocolInterface.cpp

./Plugins/Dummy/Dummy.pro

我的问题是我收到链接错误或运行时未解析的符号(主要是来自 QObject 的一些想法)或者我的信号无法连接... ProtocolHandler 应该是连接信号/插槽的那个..

谁能告诉我如何使这种方法正确?Qt 示例没有涵盖这样的想法。

谢谢你!

亚当

0 投票
1 回答
6166 浏览

qt - 为什么不能在 QObject 只是间接基类的类中设置 QObject 父级?

我有一个BatchItem继承的类QObject,以及几个继承自的类BatchItem

继承自的类的示例BatchItem

这是相应的.cpp:

但是当我尝试编译时,出现以下错误:

当然,我认为这是正确的,因为QObject这只是VideoBatchItem. 但为什么这是个问题?eg 的情况不也是这样QAbstractScrollArea,它继承自QFrame,又继承自QWidget?它们都以 aQWidget作为父级,尽管QAbstractScrollArea只是间接继承自QWidget. 不幸的是,我在文档和命名小部件类的 .cpp 文件中都找不到答案。

既然我不能通过QObject父母,还有没有办法使用Qt的父子系统来销毁我派生的批处理项目?

0 投票
1 回答
3146 浏览

qt - QObject::QObject(QObject parent=0) 在此上下文中是私有的

我有一个叫做网格的类。我想跟踪它的对象。所以当一个新的网格被创建时,我想要一个信号。我已经添加了

并将所有方法设为槽并向 c-tor meshCreated 添加一个信号。但从这里开始,我多年的痛苦开始了。无论如何,标题中的错误开始出现。即使我评论了所有行,即//在代码中的每一行之前添加,它仍然说相同。我怎样才能解决这个问题?

实际代码

0 投票
4 回答
5053 浏览

c++ - 自删除 QObjects 的最佳方法

我有两个类 Node 和 NodeContainer:

一个节点可以有父节点,也可以没有。有什么更好的方法来实现 Node 类的销毁:

1)访问父母并从那里摧毁自己

2) 发出一个信号,然后让父级销毁它

0 投票
3 回答
450 浏览

c++ - QObject 多重继承和运算符 new

被这个奇怪的问题困住了

为什么以下代码适用于 g++

这无法编译

我的意思是怎么做才能使第二个也好?

PS好吧,我将所有内容放在单独的文件中,并且效果很好。所以我认为这是 Q_OBJECT 宏的问题。

0 投票
1 回答
158 浏览

qobject - Qt/C++,QObject::connect() 对当前执行函数的影响?

我总是在我的所有应用程序中使用 QObject::connect() 但是当我的程序当前位于函数内部时,我不清楚它的效果。假设我有以下代码:

我假设当信号发出时,QObject::connect 离开函数“aFunction()”来执行“zzz()”。“aFunction()”中剩余的代码会发生什么

谢谢。

0 投票
1 回答
79 浏览

qt - Qt 依赖于 Windows 的哪些部分?

我相信 Qt 使用 GDI(+) 并且您从 QObject 开始。它是否调用 ActiveX 组件、COM 等?

例如,将 WebKit 放入一个表单中,那里发生了什么使用 Windows 点点滴滴进行绘画的事情吗?

我只是一个试图弄清楚 Qt 使用/包装了多少 WINAPI、COM 和 ActiveX 的初学者。

0 投票
1 回答
1314 浏览

qt - QObject.moveToThread(thread) 如果线程是该对象的子对象

我想用子对象(线程QObject)创建(对象),并以该对象为父对象(用于在对象存活时保持线程存活)并制作但在这种情况下启动线程的信号不起作用。QThreadobject.moveToThread(thread)

简单地:

  1. 对象拥有线程
  2. 对象移动到线程
  3. 信号启动线程不工作

这是怎么回事?

0 投票
1 回答
3334 浏览

c++ - 使用自定义类作为 Q_PROPERTY

我有两个班,TestATestBTestA延伸QObject。我已经设置了一些Q_PROPERTY这样的。

当然,我还创建了合适的 getter 和 setter。这个类工作得很好。

在我的第二堂课中TestB,我想创建一个Q_PROPERTY是 a 的TestA,所以我在testb.h.

而这在testb.cpp.

当我尝试编译它时,我收到以下错误消息。

有人能告诉我我需要做什么来解决这个问题吗?

0 投票
2 回答
6545 浏览

qt - 基于 QObject 的类与自身有一个排队连接

我正在研究我正在研究的一些源代码。我发现有人编码的一个特殊语句。源代码是一个带有 QML GUI 并使用 QT 4.7.x 的 GUI 应用程序。

下面的代码片段属于核心应用程序逻辑。

奇怪的是对象通过队列连接连接到自身,这本质上意味着对象可能同时“生活”在不同的线程中?

乍一看,这对我没有任何意义。谁能想到为什么这种联系是合理的或需要的?这甚至会起作用吗?