将一个对象的所有QT信号动态映射到一个插槽
Dynamic mapping of all QT signals of one object to one slot
我想将一个QObject的所有信号连接到某个插槽。
插槽如下所示:
void SignalIntercepter::signalFired()
{
std::cout << "Signal is fired!" << std::endl;
}
以下代码是 QObject 将传递到的位置:
void SignalIntercepter::handleObject(QObject* object)
{
const QMetaObject *me = object->metaObject();
int methodCount = me->methodCount();
for(int i = 0; i < methodCount; i++)
{
QMetaMethod method = me->method(i);
if(method.methodType() == QMetaMethod::Signal)
{
// How do I connect this signal to the slot?
// QObject::connect(object, ..., ..., ...);
}
}
}
看看
const char * QMetaMethod::signature() const
那么你应该能够像这样使用它
QObject::connect(object, method->signature(), this, SLOT(signalFired()));
您可能需要在method->signature()
调用之前添加"2"
SIGNAL(a)
因为 makro 的定义SIGNAL(a) "2"#a
如上所述 是否可以查看Q_SIGNALS、Q_SLOT、SLOT()、SIGNAL() 宏的定义?(Qt)
相关文章:
- 如何在qt中将信号和插槽与另一个对象连接 --解决了
- 一个类中的QT信号/插槽,但从不同的线程发出
- 为什么即使在使用 Qt::D irectConnection 之后,接收器的线程中仍会调用插槽?如何确保在另一个线程中调用它?
- 连接另一个在Qt中不起作用的类的插槽
- 是否可以将一个类别的插槽或常规功能从一个类连接到另一个类的插槽或常规功能?(QT)
- qnetworkAccessManager一个实例并连接插槽
- 将一个信号连接到多个插槽 Qt
- Qt移动插槽功能到另一个cpp文件
- 将一个对象的所有QT信号动态映射到一个插槽
- Qt - 解决一个插槽上的两个顺序调用,并且仅执行一次操作
- Qt:从一个对象发出相同的信号,但参数不同;插槽通过接收的参数进行区分
- Qt-有没有一种方法可以获得一个类中所有自定义插槽和信号的列表
- 如何使用信号和插槽从qt表单中获取id,然后在链表中搜索它并使用另一个表单显示结果
- Qt将GUI类中的方法连接到另一个类中的插槽
- 使用Qt信号和插槽更改另一个类的标签文本
- Qt:使用信号和插槽从另一个类调用MainWindow::Ui
- QSignalManager-无法将多个信号连接到一个插槽
- Qt按钮是呼叫2插槽,我只需要一个
- Qt信号/插槽发送一个完整的结构
- 打开一个带有插槽的新Qt窗口