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