簡體   English   中英

如何手動使另一個控件的信號發出?

[英]How to manually cause a signal of another control to emit?

我想知道它是否可以通過編碼發出一些特定的信號。例如,我想發出另一個按鈕的點擊事件,而用戶實際上沒有點擊該按鈕..我可以這樣做嗎?

你可以調用其他按鈕的點擊功能。 它將發出點擊的信號。

為什么不能直接撥打插槽,而不是自己發出信號並將其連接到插槽 插槽就像其他C ++函數一樣,你可以直接調用它。 我沒有看到你發出預定信號的任何理由(比如clicked() )。 只需直接撥打電話

信號在內部實現為C ++保護的成員函數,因此我建議不要這樣做。 (它們在Qt 5中是公開的,但它仍然不建議作為一般解決方案。)

Qt,通過moc,實現emit關鍵字,允許您通過編碼發出信號。

如果您使用的類沒有提供發出某些信號的方法,您可以對其進行子類化,並實現一個自己完成的函數。 但我必須說,我從來沒有為“正常”信號做過這件事。 只有當我在某個類擴展中定義自己的信號時才這樣做。

發出你剛寫的信號

發出signalName(參數列表);

#include <QObject>

 class myClass : public QObject
 {
     Q_OBJECT

 public:
     myClass (QObject *parent = 0) : QObject(parent) { }
     void foo();

 signals:
     void mySignal(int param);
 };

void myClass::foo() { emit mySignal(5); }

更多信息,請訪問http://doc.qt.io/qt-4.8/signalsandslots.html

您還可以將信號連接到另一個信號,這樣您就可以將mysignal連接到按鈕點擊信號,當您的信號發出時,點擊的信號也將被發出,請參閱http://doc.qt.io/qt-4.8/qobject.html #connect

如果您為按鈕設置了操作,您也可以簡單地調用要觸發的操作。 只需使用action_of_the_button->trigger();

暫無
暫無

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

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