Qt 的信號與槽

QT的信號與槽的三種實現方式

3種方式:

1:直接在設計選項卡中拖動連接控件,然後選擇控件間的關聯函數

2:頭文件mainwindows.h中:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_calButton_clicked();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

其中

private slots:
    void on_calButton_clicked();

就是使用“元對象系統(meta-object system)”自動進行創建信號與槽的關聯性動作,on表示動作,calButton是空間類名,clicked是綁定的信號事件。這種情況我們只需要在涉及窗口手動添加>

我們只需要在mainwindows.cpp中實現對應控件中,右鍵選擇轉到槽,即可自動幫你創建好上面的函數,我們只需要實現內容即可。

void MainWindow::on_calButton_clicked()
{
    int fNumInt = ui->firstLineEdit->text().toInt();
    int sNumInt = ui->secondLineEdit->text().toInt();
    ui->resultLineEdit->setText(QString::number(rNum));
}

3:使用代碼手動關聯信號與槽系統

首先需要在頭文件mainwindows.h中添加自己的solt:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void calSlot(); //名字可以隨意取

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

然後在mainwindows.cpp中加入對應的槽方法:

void MainWindow::calSlot()
{
    int fNumInt = ui->firstLineEdit->text().toInt();
    int sNumInt = ui->secondLineEdit->text().toInt();
    ui->resultLineEdit->setText(QString::number(rNum));
}

最後,我們需要關聯控件的點擊事件和槽方法:

mainwindows.cpp中添加

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);  //------新加入部分----//   QObject::connect(ui-callButton,SIGNAL(clicked()),this,SLOT(calSlot()));//關聯信號與槽  }  

這三種辦法均可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章