触发Qt操作的常用方法是使用信号槽连接。任何其他方式,因为我的功能不是一个插槽?比如直接打电话?
答案 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);
......
}