我想学习如何在没有设计师的情况下手工创建 GUI。我尝试添加一个布局到我的MainWindow
但运行时它说
QWidget::setLayout:尝试在主窗口“”上设置 QLayout“”,该窗口已经有布局
这是我的代码:
//Header
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
QHBoxLayout *layout;
};
//Constructor in my *.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
layout = new QHBoxLayout;
this->setLayout(layout);
}
//The usual main function
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
怎么了?我按照书上说的做了。我什至在互联网上查找了一些代码,这些代码确实很难找到,但它仍然是一样的。我只是无法向窗口添加布局。
有一个类似的问题帮助我找出问题所在。感谢 Mat 提供了对该问题的链接。
什么每QMainWindow
需求是一个QWidget
作为中央小部件。我还与设计器一起创建了一个新项目,对其进行编译并查找 ui_*.h 文件。
所以每个 QMainWindow 应该看起来类似于这样:
//Header
class MainWindow : public QMainWindow
{
Q_OBJECT
QWidget *centralWidget;
QGridLayout* gridLayout;
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
private:
};
//*.cpp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
centralWidget = new QWidget(this);
this->setCentralWidget( centralWidget );
gridLayout = new QGridLayout( centralWidget );
}
现在您无需向主窗口添加/设置布局。您将其添加/设置到centralWidget。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)