gpt4 book ai didi

c++ - 为什么Mainwindow的成员函数可以调用Qt中Qlabel的成员

转载 作者:太空宇宙 更新时间:2023-11-04 12:52:02 24 4
gpt4 key购买 nike

我是 C++ 新手,刚开始学习 C++ 中的 Qt。我发现下面的代码让我有点困惑。它所做的只是在窗口中创建一个标签。

mainwindow.cpp是

    1   #include "mainwindow.h"
2 #include "ui_mainwindow.h"
3
4 MainWindow::MainWindow(QWidget *parent) :
5 QMainWindow(parent),
6 ui(new Ui::MainWindow)
7 {
8 ui->setupUi(this);
9 }
10
11 MainWindow::~MainWindow()
12 {
13 delete ui;
14 }
15
16 void MainWindow::on_pushButton_clicked()
17 {
18 ui->label->setText("button is clicked");
19
21 }

Main.cpp是

    1   #include "mainwindow.h"
2 #include <QApplication>
3
4 int main(int argc, char *argv[])
5 {
6 QApplication a(argc, argv);
7 MainWindow w;
8 w.show();
9
10 return a.exec();
11 }

Mainwindow.h是

 1  #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include <QMainWindow>
5
6 namespace Ui {
7 class MainWindow;
8 }
9
10 class MainWindow : public QMainWindow
11 {
12 Q_OBJECT
13
14 public:
15 explicit MainWindow(QWidget *parent = 0);
16 ~MainWindow();
17
18 private slots:
19 void on_pushButton_clicked();
20
21 private:
22 Ui::MainWindow *ui;
23 };
24
25 #endif // MAINWINDOW_H

我的困惑是 ui-->label->setText("botton is clicked")。我的理解是ui是MainWindow的私有(private)成员,继承自Qwidget。但是label只是Qlabel的一个成员。为什么基类成员可以调用派生类的成员?或者有人可以向我解释为什么这是正确的吗?

非常感谢大家

最佳答案

您的类“MainWindow”派生自 QMainWindow。 ui是全局级别的命名空间;它包含一个名为 MainWindow 的类,这不是您的“MainWindow”。 ui 是类型为 Ui::MainWindow 的类的私有(private)成员,它包含 QLabel。

关于c++ - 为什么Mainwindow的成员函数可以调用Qt中Qlabel的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48632935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com