我已经有了一个应用程序,现在正在调整它。在这方面,我引入了一个新信号,它必须在另一个信号发出时发出。这在Qt中可能吗?
写一个插槽只是为了发出这个信号感觉很原始和蹩脚…
进一步详细说明,我必须连接按钮signalClicked()到我自己的信号说sendSignal(enumtype)…
编辑:忘了说我需要用第二个信号发送一个数据。
是的,可以不创建额外的插槽。只需连接信号到信号:
connect(this,SIGNAL(someSignal()),this,SIGNAL(anotherSignal()));
更多信息见doc.
编辑:您可以像往常一样共享连接中的数据。肮脏的例子:
QWidget* obj = new QWidget;
obj->setWindowTitle("WindowTitle");
//share data, pass wrong data to the signal
QObject::connect(obj,SIGNAL(objectNameChanged(QString)),obj,SIGNAL(windowTitleChanged(QString)));
QObject::connect(obj,&QWidget::windowTitleChanged,[](QString str) {qDebug() << str;});
obj->setObjectName("ObjectName");
qDebug() << "But window title is"<< obj->windowTitle();
obj->show();
输出是:
"ObjectName"
But window title is "WindowTitle"
但是没有办法这样做:
connect(this,SIGNAL(someSignal()),this,SIGNAL(anotherSignal("with custom data")));
在这种情况下,您需要一个单独的插槽