パラメータ、関数と関数ポインタとポインタとQtのシグナル

A:Qtのバンド信号パラメータ

main.cppに

#include " widget.h " 
の#include " slot.h " 
の#include <はQApplication>
 int型のmain(int型 ARGC、CHAR * ARGV [])
{ 
    はQApplication(ARGC、ARGV)。// 查找はQApplication()的相关资料 
    ウィジェットW。
    w.show(); 
    リターンa.exec(); 
}

widget.cpp

#include " widget.h " 
の#include " ui_widget.h " 
の#include " のQPushButton " 
の#include <QDebug>
 // の#include "mypushbutton.h"   // カスタムボタン 
ウィジェット::ウィジェット(QWidgetの*親) :QWidgetの(親)、UI(新しい新しいウィジェットUiの::)// ウィジェットクラスはQWidgetから継承され、そこには、クラスのコンストラクタの外部で定義されている。
{ 
         UI - > setupUi(
            のQPushButton * BTN1 = 新しい新規のQPushButton; 
            BTN1 - >のsetParent (この); 
            BTN1 - >setText(「引数を使った信号処理);
       
のQPushButton * =新しい新しいBTN2のQPushButton。
            btn1->のsetParent(この);  btn1->のsetText( "パラメータなしで信号処理" );
/ * 2つの信号は関数のオーバーロードに使用されているので、その関数ポインタの使用と区別するためにそこに必要。
*関数ポインタを:基本的機能であるポインタ、
* //プロファイルを次の文:「::」:でスコープ定義する
*空(はMyWidget :: * myWidget_singals) (パラメータ関数ポインタ)=&はMyWidget :: my_singals;
*&はMyWidget :: my_singalsする:信号(機能)の名前を表します。我々は、変数名として彼を考えると。 &はMyWidget ::関数はコンパイラに伝えるために使用されてはMyWidgetクラスです
*(はMyWidget :: * myWidget_singals):関数ポインタ名:はMyWidget ::ピンポイントの彼の範囲* int型C = 5; * int型 * P = .. C;、&*
/
 無効(ウィジェット:: * myWidget_singals)()=&ウィジェット:: my_singals; //パラメータなし信号
 無効(ウィジェット:: * myWidget_singals1)(int型、QStringの)=&ウィジェット:: my_singals; //信号パラメータ
 (BTN1、Widget_singals、この、&ウィジェット:: N_canshu)接続; //パラメータなしで信号を処理します。
 CONNECT(BTN2、Widget_singals1、この&ウィジェット:: print_singals); //信号処理パラメータ。
}
(QStringのint型のC、)、ボイドウィジェット:: print_singals //信号処理パラメータ。
{
    //str.toUtf8()。データ()は、使用する中国の必要性があるため。
    qDebug()<< << C << a.toUtf8()データを()<< ENDL "息子ウィジェットsingals Cとなるから"。
}
:: N_canshuウィジェットボイド()
{
qDebug()<< "NOパラメータ";
}

widget.h

WIDGET_H #ifndefの
 に#define WIDGET_H 
する#include <QWidgetの> 
QT_BEGIN_NAMESPACE 
名前空間宇井{ クラスウィジェット;} // 名前空間宇井
QT_END_NAMESPACEの

クラスウィジェット:公共QWidgetの
{ 
    Q_OBJECTの

公共
    ウィジェット(QWidgetの *親= nullptr a)は、
    ウィジェット();
     無効 print_singals (INT C、QStringのA); //はパラメータで関数を処理する溝
    空隙 N_canshuを(); // の引数なしで処理槽
信号:
/ *キーワード信号が定義信号を追加する必要があります。
 *ノーリターン値信号が、あなたはパラメータを持つことができます。
 *信号は、関数宣言で、単純に定義せずに宣言します。
 *使用が送ら発します。
 *信号が過負荷状態にすることができます。
* /
空my_singals(); //カスタム信号
ボイドmy_singals(INT、QStringの)信号が伝送される;. //パラメータ信号帯域
プライベート:宇井::ウィジェット * UI。
}。
#endifの // WIDGET_H

II:ポインタの機能と関数ポインタ

 

おすすめ

転載: www.cnblogs.com/1314bjwg/p/12317229.html