問題
如题所述
解決
誰の助けも借りずに快適に暮らす
//xxx.h
signals:
xxx
private slots:
xxx
//xxx.cpp
connect(xx,xx,xx,xx);
半自動
スロット機能に慣れていると、これに適応するのは間違いなく難しく、特に面倒だと思います。実際、私たちは比較的簡潔な方法を持っています。
標準化するだけです!
たとえば、pushButtonクリックイベントを追加する必要があります。
// xxx.h
private slots:
void on_pushButton_DigitalIO_clicked();
// xxx.cpp
void xxxx::on_pushButton_DigitalIO_clicked(){
//...
}
この方法は事故によるものであることが判明しました。カスタムスロット関数は常に2回呼び出され、信号は1回しか送信されませんでした。スロット関数名に問題があることが判明しました。
それで私は考え始めました、私たちはスロットに行くためにクリックしましたQT Creator
、私たちは私たちのために何をしましたか?
最初に結論についてお話ししましょうQt Creator
。特定の形式で名前が付けられたスロット関数を生成するのに役立ちます。コンパイル時には、名前付け規則に従って内部的に実行されますconnect
。
具体的には:
- 変更
ui文件
、コンパイル、生成ui_xxxx.h
ui_xxxx.h
setupUint( )
関数が含まれています。関数の終わりが必要ですQMetaObject::connectSlotsByName(HardwareControl)
Qt
ドキュメントの公式説明を見てみましょう。
この関数は、特定のオブジェクトのすべての子オブジェクトを再帰的に検索し、それらの一致信号からオブジェクトベンチの特定のルールに従います。
ルールに従って、チャネル機能を定義する必要があります。それを完成connect
させましょうQt
-
void on_<object name>_<signal name>(<signal parameters>);