日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

6.QT信号和槽

發布時間:2024/9/27 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 6.QT信号和槽 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • 新建項目SignalAndSlot項目

  • 編寫代碼如下:

    mysignal.h

    #ifndef MYSIGNAL_H #define MYSIGNAL_H ? #include <QObject> ? class MySignal : public QObject { ??? Q_OBJECT public: ??? explicit MySignal(QObject *parent = 0); ? signals: ??? void sig(); ? public slots: ? }; ? #endif

    mysignal.cpp

    #include "mysignal.h"

    ?

    MySignal::MySignal(QObject *parent) :

    ??? QObject(parent)

    {

    }

    myslot.h

    ??????? #ifndef MYSLOT_H #define MYSLOT_H ? #include <QObject> ? class MySlot : public QObject { ??? Q_OBJECT public: ??? explicit MySlot(QObject *parent = 0); ? signals: ? public slots: ??? void slot(); ? }; ? #endif // MYSLOT_H

    myslot.cpp

    #include "myslot.h"

    #include <QDebug>

    ?

    MySlot::MySlot(QObject *parent) :

    ??? QObject(parent)

    {

    }

    ?

    void MySlot::slot()

    {

    ??? qDebug() << "MySlot::slot is called";

    }

    Main.cpp

    #include <QCoreApplication> #include "mysignal.h" #include "myslot.h" ? /* *1)信號的定義必須在signals:保留字下,并且不需要實現 *2)槽的定義必須在slots:保留字下,需要實現 *3)信號和槽通過QObject::connect函數連接 *4)當信號被觸發是,槽函數被調用 * *需要注意的是: *1) 信號的定義必須在signals:保留字下,并且不需要實現 *2)槽的定義必須在slots:保留字下,需要實現 *3)信號和槽通過QObject::connect函數連接 *4)當信號被觸發時,槽函數被調用 * *需要注意的是: *1)信號和槽,是QT的拓展,所以實現信號和槽的類,必須是QObject的子類 *2)實現信號和槽的類,必須以宏Q_OBJECT開始 *3)連接信號和槽,要用到SIGNALSLOT宏,轉換函數為字符串 *4)一個信號可以和多個槽連接,槽函數調用的順序是不確定的 *5)多個信號可以同時連接一個槽 *6)信號可以連接信號,形成信號傳導 *7)信號和槽的參數應該一樣多,而且類型必須相同 *8)信號和槽都可以重載 *9)信號和槽都可以有默認參數 *10)槽函數可以像普通函數一樣被調用 *11)在槽函數中,調用sender可以獲得信號調用者 * * 總結下: * 一個類:QObject * 三個宏:Q_OBJECT SIGNAL SLOT * 三個保留字:signals, slots, emit */ int main(int argc,char** argv) { ??? QCoreApplication app(argc,argv); ? ??? MySignal sig; ??? MySlot slot; ? ??? //通過QObjectconnect實現信號和槽函數之間的關聯, ??? //當調用了信號之后槽函數也相應的被調用了 ??? QObject::connect(&sig, SIGNAL(sig()), &slot, SLOT(slot())); ??? //通過下面一行實現發射一個信號 ??? emit sig.sig(); ??? return app.exec(); }

    運行結果:

    ?

    總結

    以上是生活随笔為你收集整理的6.QT信号和槽的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。