布局在 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
main.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 中不起作用