スロット機能を有する基準信号
いくつかの信号および機能のテンプレートスロットが書かれている、それだけで呼び出すことができます
ここでは、プログラムのウィンドウを閉じるには、ボタンのクリックは、
.hファイル
MYWIDGET_H #ifndefの に#define MYWIDGET_H の#include <QWidgetの> する#include <のQPushButton> クラスはMyWidget:公共QWidgetの { Q_OBJECT // 使用するために、その必要性のある信号を用いてタイムスロット公衆: はMyWidget(QWidgetの *親= 0 ); 〜はMyWidget() ; 公共: のQPushButton * pBtn1; }; #endifの// MYWIDGET_H
.cppファイル
#include " mywidget.h " はMyWidget ::はMyWidget(QWidgetの * 親) :はQWidget(親) { pBtn1 = 新新のQPushButton(この); // 親オブジェクトを指定するか、またはウィンドウ上のボタンが正しく表示されない pBtn1->のsetText (「クローズ」); // 閉じるボタンを作成 pBtn1->移動(100、100); // ウィンドウ上のボタンの位置を変更 // 標準シグナルとスロットを使用して機能 (pBtn1、&のQPushButtonを接続::押下、この、&はMyWidget ::閉じる使用); / * pBtn1:信号の送信者、ポインタ型 *とのQPushButton ::関数として信号を押下し、送信者およびクラス名:信号名 *この:受信信号 *&ウィジェット::近いスロット機能、信号処理機能; ::&許容されるクラス名スロット関数名 * / } はMyWidget ::〜はMyWidget() { }
II。カスタムスロット機能
.hファイル
MYWIDGET_H #ifndefの に#define MYWIDGET_H の#include <QWidgetの> する#include <のQPushButton> クラスはMyWidget:公共QWidgetの { Q_OBJECT // 使用するために、その必要性のある信号を用いてタイムスロット公衆: はMyWidget(QWidgetの *親= 0 ); 〜はMyWidget() ; 公共: のQPushButton * pBtn1; 公共: // 自己溝定義関数ボイドmyslot(); }; #endifの// MYWIDGET_H
.cppファイル
#include " mywidget.h " はMyWidget ::はMyWidget(QWidgetの * 親) :はQWidget(親) { pBtn1 = 新新のQPushButton(この); // 親オブジェクトを指定するか、またはウィンドウ上のボタンが正しく表示されない pBtn1->のsetText (" 閉じる使用"); // 閉じるボタンを作成 pBtn1->移動(100、100); // ウィンドウ上のボタンの位置を変更する 接続(pBtn1、 &のQPushButton ::押され、この、myslot); / * 自己溝定義関数: * QT5:任意のメンバ関数、通常のグローバル関数、静的関数 *は戻り信号値の関数として存在しないので、スロット関数値が返さなければなりません *一般QT5メンバ関数は、スロット関数として使用されるで * / } // メンバ関数が 無効にはMyWidgetを:: myslot() { この - > クローズ(); } はMyWidget ::〜はMyWidget() { }
III。カスタム関数シグナルとスロット
以下は、子ウィンドウに切り替えるために、2つのウィンドウは、メインウィンドウのボタン、の切り替えの手順で、サブウィンドウボタンをクリックし、メイン信号にカスタムウィンドウを送信します。
mainwidget.hファイル
#ifndefのMAINWIDGET_H の#define MAINWIDGET_H の#include <QWidgetの> する#include <のQPushButton> の#include " subwidget.h " クラス MainWidget:公共QWidgetの { Q_OBJECT 公共: MainWidget(QWidgetの *親= 0 )。 〜MainWidget(); 公共: のQPushButton * pBtn1。 サブウィジェットサブウィジェット。 公共: 無効ShowSubWidget(); 無効DealSubを(); 無効 DealSubWin(int型、のQString)。 }。 #endifの // MAINWIDGET_H
mainwidget.cppファイル
#include " mainwidget.h " の#include <QDebug> MainWidget :: MainWidget(QWidgetの * 親) :QWidgetの(親) { この - > setWindowTitle(" メインウィンドウ" ); pBtn1 = 新しい新規のQPushButton(" サブウィンドウにスイッチ"、本); pBtn1 - >移動(100、100 ); // サブウインドウ表示するボタンをクリック 接続(pBtn1、のQPushButton ::&押され、この、ShowSubWidgetを); // 信号処理サブウインドウ送信 // 信号パラメータなし 無効(サブウィジェット:: * funSignal)()=&サブウィジェット:: mySignal。 (接続&サブウィジェット、funSignal、この、DealSub)。 // 带有参数的信号 のボイド(サブウィジェット:: *テスト信号)(int型、QStringの)=&サブウィジェット:: mySignal。 (接続&サブウィジェット、テスト信号、この、DealSubWin)。 } MainWidget ::〜MainWidget() { } ボイドMainWidget :: ShowSubWidget() { subWidget.show()。 } ボイドMainWidget :: DealSub() { subWidget.hide()。 この - > ショー(); } 無効 MainWidgetを:: DealSubWin(INT 、QStringのSTR) { qDebug() << 。 qDebug() << str.toUtf8()データ()。 }
subwidget.hファイル
SUBWIDGET_H #ifndefの に#define SUBWIDGET_H の#include <QWidgetの> する#include <のQPushButton> クラスのサブウィジェット:公共QWidgetの { Q_OBJECTの公共: 明示的なサブウィジェット(QWidgetの*親= 0 ); シグナル:// カスタム信号/ * 信号の戻り値ではなく、パラメータを有することができる *信号は、単に宣言、定義する必要関数を宣言しないことではありません EMITを使用して* mysignalの 信号がオーバーロードすることができます* * / 無効)(mysignalを; // 何のパラメータ信号ボイド mysignal(int型、QStringの); // パラメータがあります信号公衆 スロット: 公共: のQPushButton * PBTN; 公共: // カスタム関数溝 のボイドsendSlot(); }; #endifの // SUBWIDGET_H
subwidget.cppファイル
#include " subwidget.h " サブウィジェット::サブウィジェット(QWidgetの * 親):QWidgetの(親) { この - > setWindowTitle(" サブウィンドウ" ); PBTN = 新しい新規のQPushButton(" スイッチメインウィンドウに"、この); PBTN - >移動(100、100 )、 接続(PBTN、 &のQPushButton ::クリックされた、この、sendSlotが); } 無効サブウィジェットを:: sendSlot() { // ボタンが押されると、メインウィンドウの子ウィンドウに信号を送信する 100 (mySignalを放出します) ; mysignal EMIT( 、" 私は子ウィンドウです" ); }