日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Qt文档阅读笔记-Multiple Inheritance Example 实例解析及Automatic Connections解析

發布時間:2025/3/15 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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]#endif

calculatorform.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解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。