这是一个简单的Qt C ++程序,可以创建GUI。我是一名学生,我也不熟悉C ++而不是Java。在显示如下的代码中,有一个名为QWidget
的类*window
的窗口对象引用,它没有包含在代码的开头。据我所知,所有包含的小部件都在QWidget(QSlider和QSpinBox)下。什么是QWidget的基类。 (如果QObject和QWidget之间有基类)?为什么可以在不包含它的情况下从QWidget创建对象?为什么whole object
的{{1}}显示为窗口,如果其他Widget类在其下面(参见下图)。
来自C++-GUI-Programming-with-Qt-4-1st-ed ebook的图片
QWidget base class
答案 0 :(得分:4)
QSlider
继承自QAbstractSlider
,QWidget
本身继承自QSlider
。因此,QWidget
的间接包含QSpinBox
,允许您创建一个QWidget
。与任何其他窗口小部件一样,QWidget *window
也继承自first(people)$age
。
正如in the doc所说:
没有父窗口小部件的窗口小部件始终是一个独立窗口 (顶级小部件)。
所以head(people, 5)$age
take(people, 5)$age
实际上创建了一个窗口,标题栏和所有。
答案 1 :(得分:2)
小部件是用户界面的原子。 (...)小部件是 由其父级和前面的小部件剪裁。
未嵌入父窗口小部件的窗口小部件称为窗口。 (...)
没有父窗口小部件的窗口小部件始终是一个独立窗口 (顶级小部件)。
希望这有帮助。
答案 2 :(得分:0)
QWidget的基类是什么。
QWidget继承自QObject和QPaintDevice。
为什么可以在不包含它的情况下从QWidget创建对象?
我猜<QSlider>
和/或<QSpinBox>
包含<QWidget>
。是的,为了示例,如果有明确的#include <QWidget>
,它可能会“更清晰”,但显然没有必要。
为什么整个QWidget显示为窗口,如果其他Widget类在它下面。
很抱歉,但我不确定你在这里问的是什么。
答案 3 :(得分:0)
QWidget的基类是什么。 (如果QObject和QWidget之间有基类)?
我不知道。 QWidget是基本的GUI类。我的意思是所有其他GUI类必须从中派生出来。因此,层级链中的内容并不重要。
为什么可以在不包含QWidget的情况下从QWidget创建对象?
通过这个我认为你的意思是#include QWidget.h。 QSpinBox和QSlider派生自它,所以我假设它们的头文件包含QWidget.h。包含是传递性的。
为什么整个QWidget显示为窗口,如果其他Widget类在它下面。 这真的不清楚。如果一个窗口小部件不包含其他窗口小部件,它就没有任何意义。