为什么可以从QWIDGET创建对象,而不在C++程序的开头包括它 这是一个简单的Qt C++程序,它创建了一个GUI。我是学生,我也不太熟悉C++,而不是java。在下面显示的代码中,有一个名为*window的类QWidget的窗口对象引用,它在代码开头没有包含。据我所知,所有包含的小部件都在QWidgetQSlider&QSpinBox下。QWidget的基类是什么。QObject和QWidget之间是否存在基类?为什么可以从QWidget创建一个对象而不包含它?为什么QWidget基类的整个对象显示为一个窗口,如果其他小部件类在它下面,请参见下图

为什么可以从QWIDGET创建对象,而不在C++程序的开头包括它 这是一个简单的Qt C++程序,它创建了一个GUI。我是学生,我也不太熟悉C++,而不是java。在下面显示的代码中,有一个名为*window的类QWidget的窗口对象引用,它在代码开头没有包含。据我所知,所有包含的小部件都在QWidgetQSlider&QSpinBox下。QWidget的基类是什么。QObject和QWidget之间是否存在基类?为什么可以从QWidget创建一个对象而不包含它?为什么QWidget基类的整个对象显示为一个窗口,如果其他小部件类在它下面,请参见下图,c++,qt,C++,Qt,来自 从: 小部件是用户界面的原子。。。一个小部件是 由其父对象和前面的小部件剪裁 未嵌入父窗口小部件的窗口小部件称为窗口。 没有父窗口小部件的窗口小部件始终是独立的窗口 顶级小部件 希望这有帮助 QWidget的基类是什么 从QObject和QPaint设备继承 为什么可以从QWidget创建一个对象而不包含它 我猜这和/或包括。是的,为了这个例子,如果有一个明确的include,它可能会更干净,但显然没有必要 为什么整个QWidget显示为一个窗口,如果其他的Widget类在它下面 很抱歉

来自

从:

小部件是用户界面的原子。。。一个小部件是 由其父对象和前面的小部件剪裁

未嵌入父窗口小部件的窗口小部件称为窗口。

没有父窗口小部件的窗口小部件始终是独立的窗口 顶级小部件

希望这有帮助

QWidget的基类是什么

从QObject和QPaint设备继承

为什么可以从QWidget创建一个对象而不包含它

我猜这和/或包括。是的,为了这个例子,如果有一个明确的include,它可能会更干净,但显然没有必要

为什么整个QWidget显示为一个窗口,如果其他的Widget类在它下面

很抱歉,我不确定你在问什么。QSlider继承自qbstractslider,而qbstractslider本身继承自QWidget。因此,QSlider的包含间接地包括了QWidget,允许您创建一个。QSpinBox和任何其他小部件一样,也继承自QWidget

如前所述:

没有父窗口小部件的窗口小部件始终是独立的窗口 顶级小部件

因此QWidget*窗口实际上创建了一个带有标题栏和全部的窗口。

什么是QWidget的基类。QObject和QWidget之间是否存在基类

我不知道。QWidget是基本的GUI类。我的意思是,所有其他GUI类都必须从中派生。因此,在层级链中,它上面的内容实际上并不重要

为什么可以从QWidget创建一个对象而不包含它

我想你的意思是包括QWidget.h。QSpinBox和QSlider就是从中派生出来的,所以我假设它们的头文件包括QWidget.h。包含是可传递的

为什么整个QWidget显示为一个窗口,如果其他的Widget类在它下面。
这真的不清楚。如果窗口小部件不包含其他窗口小部件,那么将其作为窗口是没有意义的。

您检查过了吗?未嵌入父窗口小部件的窗口小部件称为窗口。这并不能真正回答问题。问题是:为什么在代码中没有包含的情况下可以使用QWidget。
#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>

int main(int argc, char *argv[]){

  QApplication app(argc, argv);

  QWidget *window = new QWidget;
  window->setWindowTitle("select your age");


  QSlider *slider = new QSlider(Qt::Horizontal);
  QSpinBox *spin = new QSpinBox;
  slider->setRange(0, 130);
  spin->setRange(0, 130);

  QObject::connect( spin, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)) );
  QObject::connect( slider, SIGNAL(valueChanged(int)), spin, SLOT(setValue(int)) );

  spin->setValue(30);

  QHBoxLayout *layout = new QHBoxLayout;

  layout->addWidget(spin);
  layout->addWidget(slider);
  window->setLayout(layout);

  window->show();

  return app.exec();
}