如何在不使用信号插槽连接的情况下触发操作?

时间:2013-02-04 15:54:46

标签: c++ qt

触发Qt操作的常用方法是使用信号槽连接。任何其他方式,因为我的功能不是一个插槽?比如直接打电话?

3 个答案:

答案 0 :(得分:13)

您可以使用Qt 5中的新QObject::connect语法将信号连接到非插槽方法。它看起来像这样:

connect(action, &QAction::triggered, this, &MyClass::doSomeFunction);

在此示例中,MyClass::doSomeFunction不需要是一个插槽。 Here is a more in depth explanation

如果你真的想要触发QAction,你可以直接这样做,而不使用信号或插槽:

action->trigger();

答案 1 :(得分:0)

您可以添加将与信号连接的插槽,您可以在其中调用您的功能。

答案 2 :(得分:0)

如果在main()中连接,它可以是这样的:

void windowAbout(){
   QMessageBox aboutMB(QMessageBox::NoIcon, "About", "This is a weather forcast !");
   aboutMB.setIconPixmap(QPixmap(":/icon.ico"));
   aboutMB.exec();
}
int main(){
   ......
   QObject::connect(aboutAction, &QAction::triggered, &app, &windowAbout);
   ......
}