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()));//關聯信號與槽 }
這三種辦法均可。