參考連結1:http://blog.csdn.net/skyhawk452/article/details/6121407
參考連結2:http://blog.csdn.net/memory_exception/article/details/50953005
信号與槽可以通過使用手寫代碼顯式的實作關聯 ,也可以運用 QMetaObject 類規定的槽 函數命名範式來實作自動關聯。
顯示關聯
class MyWidget : public QWidget
{
Q_OBJECT
public:
MyWidget();
signals:
void buttonClicked();
private:
QPushButton *myButton;
};
MyWidget::MyWidget()
myButton = new QPushButton(this);
connect(myButton, SIGNAL(clicked()),
this, SIGNAL(buttonClicked()));
}
自動關聯
為了實作槽函數自動進行關聯,對于Qt視窗部件已經提供的信号,可按照以下規範命名:
void on_<視窗部件名稱>_<信号名稱>_(<信号參數>);
看如下執行個體:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
ui->setupUi(this);
QString a = "calculate";
setWindowTitle(tr("%1").arg(a));
//connect(ui->calButton,SIGNAL(clicked()),this,SLOT(on_calButton_clicked()));
//QMetaObject::connectSlotsByName(this);
MainWindow::~MainWindow()
delete ui;
void MainWindow::on_calButton_clicked()
int a = (ui->firstLineEdit->text()).toInt() + (ui->secondLineEdit->text()).toInt();
ui->resultLineEdit->setText(tr("%1").arg(a));
若未能自動關聯,需要顯示調用connectSlotByName(),調用方法如上注釋處,詳細請參照官方幫助文檔:
