簡體   English   中英

如何在不使用信號插槽連接的情況下觸發動作?

[英]How to trigger an action without using signal-slot connection?

觸發Qt動作的通常方法是使用信號插槽連接。 因為我的功能不是插槽,還有其他方法嗎? 如一些直接電話?

您可以在Qt 5中使用新的QObject::connect語法將信號連接到非插槽方法。看起來像這樣:

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

在此示例中, MyClass::doSomeFunction不必是插槽。 這是更深入的解釋

如果您確實要觸發QAction,則可以直接執行此操作,而無需使用信號或插槽:

action->trigger();

您可以添加與信號連接的插槽,並可以在其中調用函數。

如果在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);
   ......
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM