为什么MainWindow的成员功能可以在QT中调用Qlabel的成员
Why a member function of Mainwindow can call a member of Qlabel in Qt
我在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是"(。我的理解UI是MainWindow的私人成员,它是从Qwidget继承的。但是只标记Qlabel的成员。为什么基类成员可以称呼派生类的成员?还是有人可以向我解释为什么这是对的?
非常感谢你们
您的类" mainwindow"是从qmainwindow派生的。UI是全球层面的名称空间;它包含一个名为Mainwindow的类,这不是您的" MainWindow"。UI是您类型UI类的私人成员:: MainWindow,它包含Qlabel。
您使两件事感到困惑:类的对象和类的成员。类的对象是类的实例。例如,您声明一些整数变量int n
。在这里,int
是一类,n
是类int
的对象(或实例(。成员是您在 private 下,您在类中声明的任何内容,受保护的 and public public 关键字。
您的MainWindow
类具有一个名为ui
的成员(在您的mainwindow.h
文件中的类MainWindow
中声明(。同时, ui
是 Ui::MainWindow
class的对象(如果打开ui_mainwindow.h
文件并查看Ui_MainWindow
类,您应该了解其工作原理(。
所以在您的功能(插槽(中:
void MainWindow::on_pushButton_clicked()
{
ui->label->setText("button is clicked");
}
您正在调用MainWindow ui
的私人成员(这是另一类的对象(。ui
具有Qlabel类的对象(或实例(的公共成员label
。
对不起,我的英语。希望这是有道理的。
- C++/QT:使用指向私有成员的常量指针作为只读数据共享
- Qt C++ 如何在 1 个命令中砍掉属于 QStringList 成员的 QString 字母
- Qt - Q_PROPERTY的通知信号未发出有关成员更改的通知信号
- QT:添加到QMenu后,谁是QActionGroup成员的父级
- 从 Qt 中的信号调用成员函数的问题
- 一个 ui 成员的 Qt 连接和同一连接中的两个信号
- 从 QT Widget 对象实例访问 QT Widget 子成员
- 通过此指针访问时的成员差异和自身的成员指针(简单的 QT 示例问题)
- 在Qt中,如何延迟成员函数的返回,直到收到信号?
- 如何列出从Qt中Qobject继承的类的所有成员变量
- QDialog 继承类的 Qt 调用成员函数
- qt -lnk2019当在类的成员函数中使用名称空间的函数时
- 为什么MainWindow的成员功能可以在QT中调用Qlabel的成员
- 为什么调用单例类 Qt 消息处理程序成员函数会出现错误:缺少参数列表
- 何时应在Qt中将子对象声明为其父类的成员变量
- 没有成员命名 'setRawData' in 'QwtPlotCurve' - 转换 Qt 4.7 为 Qt 5.8
- 没有成员命名 'setResizeMode' in 'QHeaderView' - 转换 Qt 4.7 为 Qt 5.8
- 在"QUrl"中没有名为"addQueryItem"的成员 - 将Qt 4.7转换为5.8
- Qt 并发:从另一个类调用成员函数
- C++中的静态成员Qt对象