草庐IT

qmetaobject

全部标签

c++ - 是否可以断开 QObject 的所有连接而不删除它

我有一个QObjectA,它连接到另一个QObjectB。现在我希望A连接到C,第三个QObject并与B完全断开连接。简单易懂!问题是我有很多A,每个都有自己的一组信号和插槽(B/C更通用)。到目前为止,我一直在为每种不同的类类型手动创建连接和断开连接方法。这些方法基本上是彼此的拷贝,将connect交换为disconnect调用,与don'trepeatyourself背道而驰。)。所以我的问题是:以下功能是否可行?voiddeleteAllConnections(QObject*someObject){//TODOdisconnectallconnectionsownedbyso

c++ - 为什么 QObject::disconnect(const QMetaObject::Connection &connection) 采用 const 参数来修改它?

staticboolQObject::disconnect(constQMetaObject::Connection&connection)此方法旨在断开现有的Connection对象以修改它。那么为什么将函数参数声明为const引用?在源码实现(qtbase/src/corelib/kernel/qobject.cpp)中,可以发现不可避免的const_cast:const_cast(connection).d_ptr=0;当函数的目的是修改它时,将函数参数标记为const有什么好处? 最佳答案 原因纯粹是历史原因。最初设想的AP

c++ - 如何从 QMetaObject::invokeMethod 获取返回值

我正在从我的线程中调用以下内容:QMetaObject::invokeMethod(pProcessor,"doTask",Qt::QueuedConnection,Q_RETURN_ARG(quint32,taskId),Q_ARG(quint64,objId),Q_ARG(quint8,intId),Q_ARG(QString,name),Q_ARG(QString,comment));但不管我做什么,它都会失败。如果我取出Q_RETURN_ARG(quint32,taskId),则调用该方法,但我需要taskId,但我无法获取。非常感谢任何帮助。 最佳

c++ - QMetaObject::invokeMethod:使用继承时没有这样的方法

我有一个父类(superclass)Common,它继承自QObject。然后我得到了一个类Item,它继承自Common。Common.hclassCommon:publicQObject{Q_OBJECTpublic://somemethods};Item.hclassItem:publicCommon{Q_OBJECTpublic://somemethodsvoidtest(QStringvalue);};Item.cppvoidItem::test(QStringvalue){qDebug()我想使用QMetaObject::invokeMethod来动态调用一个函数。所以我在
12