Qt文档阅读笔记-Multiple Inheritance Example 实例解析及Automatic Connections解析
目錄
?
Multiple Inheritance Example 實例解析
Automatic Connections解析
?
Multiple Inheritance Example 實例解析
這個實例很簡單,主要是為了引出uic的Automatic Connections
先把代碼帖上來,再來簡單的解析下:
源碼如下:
calculatorform.h
#ifndef CALCULATORFORM_H #define CALCULATORFORM_H//! [0] #include "ui_calculatorform.h" //! [0]//! [1] class CalculatorForm : public QWidget, private Ui::CalculatorForm {Q_OBJECTpublic:explicit CalculatorForm(QWidget *parent = nullptr);private slots:void on_inputSpinBox1_valueChanged(int value);void on_inputSpinBox2_valueChanged(int value); }; //! [1]#endifcalculatorform.cpp
#include "calculatorform.h" #include <QWidget>//! [0] CalculatorForm::CalculatorForm(QWidget *parent): QWidget(parent) {setupUi(this); } //! [0]//! [1] void CalculatorForm::on_inputSpinBox1_valueChanged(int value) {outputWidget->setText(QString::number(value + inputSpinBox2->value())); } //! [1]//! [2] void CalculatorForm::on_inputSpinBox2_valueChanged(int value) {outputWidget->setText(QString::number(value + inputSpinBox1->value())); } //! [2]main.cpp
#include "calculatorform.h" #include <QApplication>//! [0] int main(int argc, char *argv[]) {QApplication app(argc, argv);CalculatorForm calculator;calculator.show();return app.exec(); } //! [0]個人覺得這個應該是為了提醒多繼承,才有一個繼承private Ui::CalculatorForm。
這里最關鍵的是下面這兩個槽函數:
在ui界面里面并在界面中關聯信號與槽,也沒有在代碼中寫connect,關聯信號與槽,而是使用了Automatic Connections機制處理(uic與元對象共同作用)
private slots:void on_inputSpinBox1_valueChanged(int value);void on_inputSpinBox2_valueChanged(int value);這里使用的技術是uic編譯成.h后,使用元對象自動連接,在下面的小結中將會說明。
來看看界面和各個變量名:
其中就是這個setupUi(this),這個函數是Ui::CalculatorForm里面的,通過參數this指針,使得CalculatorForm這個界面能夠顯示。
?
Automatic Connections解析
這個的主要原理是,把槽函數寫成指定的格式,uic生成.h文件的時候,調用元對象的connectSlotsByName函數,從而達到自動連接的效果!
要求的槽函數格式如下:
void on_<object name>_<signal name>(<signal parameters>);這里uic生成的.h文件中,調用了元對象系的connectSlotsByName(this)。
從而實現了自動連接!
這種方式,感覺和Spring Boot中的JPA映射數據庫表名和列名一樣。
下面來總結下目前3種連接信號與槽的方式:
? ? ? ? ? 1. 在代碼中使用connect進行連接;
? ? ? ? ? 2. 在ui文件中,配置信號與槽;
? ? ? ? ? 3. 使用標準命名法利用uic與元對象連接信號與槽。
總結
以上是生活随笔為你收集整理的Qt文档阅读笔记-Multiple Inheritance Example 实例解析及Automatic Connections解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java前端笔记-后端Springboo
- 下一篇: C/C++笔记-使用RabbitMQ的C