QT+信號和槽函數_自定義槽函數_一個信號對應多個槽函數


以下的代碼里面有自定義槽函數的內容,同時也有信號實現的函數;

#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>

#include <QPushButton>


class MainWidget : public QWidget
{
    Q_OBJECT

public:
    MainWidget(QWidget *parent = 0);
    ~MainWidget();
    void mySlot();//自定義的槽函數

private:
    QPushButton btn1;
    QPushButton *btn2;
};

#endif // MAINWIDGET_H

 

#include "mainwidget.h"

#include <QPushButton>
MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent)
{

//    QPushButton btn1;
//    QPushButton btn2;

    btn1.setParent(this);
    btn1.setText("colse");
    btn1.move(100,100);


    btn2 = new QPushButton(this);//指針沒有空間,是需要動態的對其進行空間的分配
    btn2 ->setParent(this);
    btn2 ->setText(" 3 2 1 ");

    connect(&btn1,&QPushButton::pressed,this ,&MainWidget::close);

    /* 對connect的說明:
     * &btn1 :信號發出着,指針類型
     * &QPushButton::pressed:處理信號,  &發送者的類名::信號名字
     * this:信號接收者
     * &MainWidget::close:   槽函數,信號處理函數 &接收者的類名::槽函數名字
    */


    /*自定義槽,說的更加通俗一點,就是普通函數的用法
     * QT5:可以是 任意的成員函數(常用這種方法,直接寫成該類的成員函數),普通全局函數,靜態函數  都可以是槽函數
     * 槽函數需要和信號一致(參數,返回值)
     * 由於信號都是沒有返回值,所以,槽函數一定沒有返回值
    */
    //釋放按鈕btn2實現里面的文本內容發生改變
    connect(btn2,&QPushButton::released,this,&MainWidget::mySlot);//在寫自定義信號槽函數的時候,一定要看發送信號函數的類型,這里released信號的函數是:void QAbstractButton::released()
                                                //即released函數沒有參數,也沒有返回值,槽函數需要和信號一致,也沒有參數和返回值

    //釋放按鈕btn2隱藏按鈕btn1
    connect(btn2,&QPushButton::released,&btn1,&QPushButton::hide);

}

//自定義槽函數的實現
void MainWidget::mySlot()
{
    btn2->setText("I LOVE YOU");
}
MainWidget::~MainWidget()
{

}

 信號和槽:QT對象之間通信的接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM