以下的代碼里面有自定義槽函數的內容,同時也有信號實現的函數;
#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對象之間通信的接口