1

触发 Qt 动作的常用方法是使用信号槽连接。由于我的功能不是插槽,因此还有其他方法吗?比如一些直接调用?

4

3 回答 3

14

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

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

在这个例子中,MyClass::doSomeFunction不需要是一个插槽。这里有更深入的解释

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

action->trigger();
于 2013-02-04T16:00:26.393 回答
0

您可以添加将与信号连接的插槽,并且可以在其中调用您的函数。

于 2013-02-04T15:57:51.000 回答
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);
   ......
}
于 2016-11-16T07:24:47.063 回答