C++ Qt:Can';t在qmain窗口中设置布局
我正在尝试在主窗口中设置布局(使用C++ Qt:Can';t在qmain窗口中设置布局,c++,qt,C++,Qt,我正在尝试在主窗口中设置布局(使用setLayout())。它在发布时不显示任何内容: class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0) { QVBoxLayout *vBoxLayout = new QVBoxLayout; { QPushButton *pushBut
setLayout()
)。它在发布时不显示任何内容:
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0)
{
QVBoxLayout *vBoxLayout = new QVBoxLayout;
{
QPushButton *pushButton = new QPushButton(tr("A button"));
vBoxLayout->addWidget(pushButton);
}
setLayout(vBoxLayout);
}
};
您需要将最后两行代码更改为以下内容:
QWidget *widget = new QWidget();
widget->setLayout(VBoxLayout);
setCentralWidget(widget);
//VBoxLayout->addWidget(new QLayout);
//setLayout(VBoxLayout);
QMainWindow
是一种特殊情况。您可以通过将布局放入新的QWidget
中,然后将其设置为中心小部件来设置此小部件的内容。另请参见答案。此代码无法编译。无法分配抽象类型的对象
QLayout
。请参阅结尾附近的一行,上面写着newqlayout
。好的,谢谢!为什么setLayout不起作用时会出现void?没有setLayout(void*)
。看见而setLayout()
不会“什么都不做”,它会在小部件上设置布局。但是,如果在运行该函数时查看应用程序输出,您应该会看到一个错误,表明已设置布局。有关此错误的解释,请参阅前面有关setLayout()
的文档。