为什么可以从QWIDGET创建对象,而不在C++程序的开头包括它 这是一个简单的Qt C++程序,它创建了一个GUI。我是学生,我也不太熟悉C++,而不是java。在下面显示的代码中,有一个名为*window的类QWidget的窗口对象引用,它在代码开头没有包含。据我所知,所有包含的小部件都在QWidgetQSlider&QSpinBox下。QWidget的基类是什么。QObject和QWidget之间是否存在基类?为什么可以从QWidget创建一个对象而不包含它?为什么QWidget基类的整个对象显示为一个窗口,如果其他小部件类在它下面,请参见下图
来自 从: 小部件是用户界面的原子。。。一个小部件是 由其父对象和前面的小部件剪裁 未嵌入父窗口小部件的窗口小部件称为窗口。 没有父窗口小部件的窗口小部件始终是独立的窗口 顶级小部件 希望这有帮助 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创建对象,而不在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。
#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();
}