布局在 Visual Studio 2015 中不起作用?

Posted

技术标签:

【中文标题】布局在 Visual Studio 2015 中不起作用?【英文标题】:layout does not work in Visual Studio 2015? 【发布时间】:2017-08-04 14:31:39 【问题描述】:

我想在 qt5 中使用布局,但在 Visual Studio 2015 中布局不起作用?

这是我的代码:

layout.h 代码

#ifndef LAYOUT_H
#define LAYOUT_H

#include <QtWidgets/QMainWindow>
#include "ui_layout.h"

class layout : public QMainWindow

    Q_OBJECT

public:
    layout(QWidget *parent = 0);
    ~layout();

private:
    Ui::layoutClass ui;
;

#endif // LAYOUT_H

ma​​in.cpp

#include "layout.h"
#include <QtWidgets/QApplication>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QHBoxLayout>

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

    QApplication a(argc, argv);
    layout w;
    QHBoxLayout hb;
    QPushButton b("button 0");
    QPushButton b1("button 1");

    hb.addWidget(&b);
    hb.addWidget(&b1);

    w.setLayout(&hb);
    w.show();
    return a.exec();

这是我的结果:

如何解决这个问题?

【问题讨论】:

什么是布局? @eyllanesc QHBoxLayout 和 QVBoxLayout QVBoxLayout 和 QHBoxLayout 没有 show 方法。 @eyllanesc 我已经添加了头文件。 @eyllanesc 我不使用 Qt Designer。 【参考方案1】:

QMainWindow 是一个特殊的小部件,因为它具有 QStatusbar、QMenuBar 等默认小部件。使用此小部件时,我们必须将新元素放置在 centralWidget 中。

所以我们必须分配一个小部件作为我们的 centralWidget,然后我们添加如下所示的布局:

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

    QApplication a(argc, argv);
    layout w;
    w.setCentralWidget(new QWidget);


    QHBoxLayout hb;
    QPushButton b("button 0");
    QPushButton b1("button 1");

    hb.addWidget(&b);
    hb.addWidget(&b1);

    w.centralWidget()->setLayout(&hb);
    w.show();

    return a.exec();

【讨论】:

这个解决方案可以解决我的问题,但我不完全明白为什么我们必须使用centralWidget。你能给我一些文章或文件吗?我会阅读这些信息。 我的回答的第一个词有一个链接,这是主要的文档,但如果你还没有看到它是:doc.qt.io/qt-5/qmainwindow.html。请不要忘记将我的答案标记为正确。

以上是关于布局在 Visual Studio 2015 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript Intellisense 在 Visual Studio 2015 中不起作用

调试模式在 Visual Studio 2015 中不起作用

Linq 扩展方法在 Visual Studio 2015 即时窗口中不可用

folderbrowserdialog1 在 Visual Studio 2015 Enterprise Windows 10 中不起作用

zen 编码在 Visual Studio 中不起作用

无法使用 Visual Studio 2015 编辑 Xamarin .axml 布局文件