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
- 下一篇: 达梦工作笔记-将A表的ID插入到B表,将