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]個人覺得這個應(yīng)該是為了提醒多繼承,才有一個繼承private Ui::CalculatorForm。
這里最關(guān)鍵的是下面這兩個槽函數(shù):
在ui界面里面并在界面中關(guān)聯(lián)信號與槽,也沒有在代碼中寫connect,關(guān)聯(lián)信號與槽,而是使用了Automatic Connections機(jī)制處理(uic與元對象共同作用)
private slots:void on_inputSpinBox1_valueChanged(int value);void on_inputSpinBox2_valueChanged(int value);這里使用的技術(shù)是uic編譯成.h后,使用元對象自動連接,在下面的小結(jié)中將會說明。
來看看界面和各個變量名:
其中就是這個setupUi(this),這個函數(shù)是Ui::CalculatorForm里面的,通過參數(shù)this指針,使得CalculatorForm這個界面能夠顯示。
?
Automatic Connections解析
這個的主要原理是,把槽函數(shù)寫成指定的格式,uic生成.h文件的時候,調(diào)用元對象的connectSlotsByName函數(shù),從而達(dá)到自動連接的效果!
要求的槽函數(shù)格式如下:
void on_<object name>_<signal name>(<signal parameters>);這里uic生成的.h文件中,調(diào)用了元對象系的connectSlotsByName(this)。
從而實現(xiàn)了自動連接!
這種方式,感覺和Spring Boot中的JPA映射數(shù)據(jù)庫表名和列名一樣。
下面來總結(jié)下目前3種連接信號與槽的方式:
? ? ? ? ? 1. 在代碼中使用connect進(jìn)行連接;
? ? ? ? ? 2. 在ui文件中,配置信號與槽;
? ? ? ? ? 3. 使用標(biāo)準(zhǔn)命名法利用uic與元對象連接信號與槽。
總結(jié)
以上是生活随笔為你收集整理的Qt文档阅读笔记-Multiple Inheritance Example 实例解析及Automatic Connections解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java前端笔记-后端Springboo
- 下一篇: 达梦工作笔记-将A表的ID插入到B表,将