Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt:Can';t在qmain窗口中设置布局_C++_Qt - Fatal编程技术网

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()
的文档。