有没有一种方法可以从Qt中的另一个信号触发一个信号?

有没有一种方法可以从Qt中的另一个信号触发一个信号?,qt,signals-slots,Qt,Signals Slots,我已经有了一个应用程序,现在正在调整它。在这方面,我引入了一个新的信号,当发出另一个信号时,必须发出该信号。这在Qt中可能吗 写一个插槽只是为了发出这个信号,感觉是如此原始和蹩脚 更详细地说,我必须将按钮signalClicked()连接到我自己的信号,比如sendSignal(enumtype) 编辑:忘了提到我需要用第二个信号发送数据。是的,不需要创建额外的插槽即可。只需将信号连接到信号: connect(this,SIGNAL(someSignal()),this,SIGNAL(anoth

我已经有了一个应用程序,现在正在调整它。在这方面,我引入了一个新的信号,当发出另一个信号时,必须发出该信号。这在Qt中可能吗

写一个插槽只是为了发出这个信号,感觉是如此原始和蹩脚

更详细地说,我必须将按钮signalClicked()连接到我自己的信号,比如sendSignal(enumtype)


编辑:忘了提到我需要用第二个信号发送数据。

是的,不需要创建额外的插槽即可。只需将信号连接到信号:

connect(this,SIGNAL(someSignal()),this,SIGNAL(anotherSignal()));

编辑:

您可以像往常一样在连接中共享数据。肮脏的例子:

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();
但没有办法做到这样:

connect(this,SIGNAL(someSignal()),this,SIGNAL(anotherSignal("with custom data")));

在这种情况下,您需要一个单独的插槽。

只需将一个信号连接到另一个信号:
connect(signal(signal1()),signal(signal2());
谢谢您的回答。我忘了添加详细信息。请参阅我的编辑。类似于
connect(this,signal(someSignal()),this,signal(另一个信号(“带有自定义数据”))
可以使用
QSignalMapper
QSignalMapper已经过时,但是它的文档显示了一种使用lambda的方法:
connect(按钮,&QPushButton::clicked,[=]{clicked(text);});
connect(this,SIGNAL(someSignal()),this,SIGNAL(anotherSignal("with custom data")));