欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/3/15 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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解析的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。