信號與槽可以通過使用手寫代碼顯式的實現關聯 ,也可以運用 QMetaObject 類規定的槽 函數命名範式來實現自動關聯。 我們只需按照下麵的標準格式定 義槽函數,這之後,uic 將會根據 QMetaObject 類制定的規則,生成界面實體類的 setupUi() 函數的內容,並完成信號與槽的關聯... ...
參考鏈接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(),調用方法如上註釋處,詳細請參照官方幫助文檔:
- 為了實現槽函數自動進行關聯,對於Qt視窗部件已經提供的信號,可按照以下規範命名: