Qtのコードベースノート_

初日の2019年10月4日にQT研究

 

// https://www.devbean.net/2012/08/qt-study-road-2-catelog/から教材の一部(共有するためのおかげで)およびC ++ GUI QT4プログラミング  

 

1.Hello、Qtの

#include <はQApplication> 
の#include <QLabel> int型のmain(int型 ARGC、チャー * ARGV [])
{ 
    はQApplicationアプリ(ARGC、ARGV)。
    QLabelラベル(" こんにちは、世界" ); 
    label.show(); 戻るapp.exec(); 
}




    

 

2.信号溝

// !!! QT 5 
の#include <はQApplication> 
の#include <のQPushButton> int型のmain(int型 ARGC、CHAR * ARGV [])
{ 
    はQApplicationアプリ(ARGC、ARGV)。
    QPushButtonボタン(" 終了" ); 
    QObject ::接続(&ボタン、&のQPushButton ::クリック、&はQApplication ::終了)。
    button.show(); 戻るapp.exec(); 
}




    

QObjectの周り::接続()5(送信者、信号、受信機、スロット)オーバーロード機能を接続; //は、信号源、信号、受信機機能です。

接続接続:: QMetaObject(CONST QObjectを*、CONST  のchar * CONST QObjectを*、CONST  のchar * 
                                Qtの:: CONNECTIONTYPE); //この関数は、文字列としての信号及びスロットう。

::コネクション接続QMetaObject(constの QObjectを*、constの QMetaMethod& constの QObjectを*、constの QMetaMethod& 
                                Qtの:: CONNECTIONTYPE); //私たちはQMetaMethodの各サブクラスの関数として見ることができます。

::コネクション接続QMetaObject(のconst* QObjectを、constの char型 * constの char型 * 
                                Qtの:: CONNECTIONTYPE)のconst ; //欠けている受信機。実際には、受信機として、この関数ポインタである

QMetaObject ::接続(接続CONST QObjectを* 、PointerToMemberFunction、
                                 CONST QObjectを* 、PointerToMemberFunction、
                                Qtの:: CONNECTIONTYPE)//シグナルとスロットタイプは、メンバ関数ポインタへのポインタである

QMetaObject ::接続が接続します(CONSTにQObject * 、PointerToMemberFunction、
                                ファンクタ); //最初の2つのパラメータが異なっていない、最後の引数は、静的関数、グローバル関数とラムダ式を受け入れることができます。

当社の信号スロットconnect()機能は、第五、最後のパラメータは明確に大型の使用であるQApplication静的関数quit()それは、ボタンは我々が送信されたときに、あるclicked()信号を、それが呼び出す機能、プログラムが終了します。QApplicationquit()

ラムダ溝を使用して、機能完了信号

// !!! QT 5 
の#include <はQApplication> 
の#include <のQPushButton> 
の#include <QDebug> int型のmain(int型 ARGC、CHAR * ARGV [])
{ 
    はQApplicationアプリ(ARGC、ARGV)。
    QPushButtonボタン(" 終了" ); 
    QObject ::(接続のQPushButton&、&ボタン::クリック、[](BOOLが){ 
        qDebug() << " あなたは私をクリック!" ; 
    }); 
    button.show(); 戻るapp.exec(); 
}




    

ので、ラムダ式は、ブール引数を受け取ることに注意信号は、実際のパラメータです。ラムダ式は、同様の、後ろの標準出力に出力される文字列。QPushButtonclicked()qDebug()cout

connect関数でQt4を:

BOOL(接続constの QObjectを*、constの char型 * constの QObjectを*、constの char型 * 
             Qtの:: CONNECTIONTYPEを)。

BOOL(接続constの QObjectを*、constの QMetaMethod& constの QObjectを*、constの QMetaMethod& 
             Qtの:: CONNECTIONTYPEを)。

ブール接続(constの QObjectを*、constの char型 * constの char型 *
             Qtの:: CONNECTIONTYPE)のconst
// !!! QT 4 
の#include <はQApplication> 
の#include <のQPushButton> int型のmain(int型 ARGC、CHAR * ARGV [])
{ 
    はQApplicationアプリ(ARGC、ARGV)。
    QPushButtonボタン(" 終了" ); 
    QObject ::接続(ボタン、SIGNALは())(クリック、
                     アプリ、SLOT(終了())); 
    button.show(); 戻るapp.exec(); 
}




    

//我々が使用SIGNALし、SLOTこれらの二つのマクロは、2つの関数は、文字列に変換した、それも注意しquit()ているQApplication静的な機能に加えて、オブジェクトへのポインタを渡す必要があります。これはまた、文法4の制限にQtのシグナルとスロットです。また、我々は注意connect()信号とスロットの関数は、文字列がかかりますので、渡されたグローバル関数やラムダ式にはできませんconnect()接続はケースが表示され、Qtの4は、コンパイルエラーではありません失敗したら(全てが文字列であるため、コンパイル時のチェックは文字列が一致するかどうかではない)が、実行時にエラーが発生します。これは間違いなく、プログラムの不安定性を増加します。

 

3.ウィンドウのレイアウト

#include <はQApplication> 
の#include <a QHBoxLayout基the> 
の#include <a QSlider> 
の#include <a QSpinBox>
 INTメイン(int型 ARGC、CHAR * ARGV [])
{ 
    はQApplicationアプリ(ARGC、ARGV); 

    QWidgetの *ウィンドウ= 新しい新しい QWidgetの;       // メインウィンドウとしてQWidgetのオブジェクト 
    ウィンドウ- > setWindowTitle(!あなたの年齢を入力してください;)

    QSpinBox * =スピンボックスの新しい新しい QSpinBox;        // 自動的にウィンドウのサブクラスがオブジェクトを設定システム 
    QSlider *スライダー= 新しい新しいQSliderを、
    スピンボックス- > setRange(0130 ); 
    スライダー - > setRange(0130 ); 

    QObject ::接続(スピン・ボックス、SIGNAL(のvalueChanged(int型))、スライダー、SLOT(のsetValue(int型)));     // 同时设置 
    はQObject ::接続(スライダー、SIGNAL(のvalueChanged(int型))、スピンボックス、SLOT(のsetValue(int型))); 

    スピンボックス - >のsetValue(20 )。

    QHBoxLayout *レイアウト= 新しい QHBoxLayout。      // 设置布局 
    レイアウト- > addWidget(スピンボックス)。         // 增加窗口 
    レイアウト- >addWidget(スライダ); 
    ウィンドウ - > setLayoutの(レイアウト);       // レイアウトウィンドウマネージャを呼び出し

    ウィンドウ - > 表示(); 

    戻り(app.exec); 
}

 

おすすめ

転載: www.cnblogs.com/Jovesun/p/11621652.html