在mainwindow中添加的控件显示不出或者堆成了一堆, 布局了也显示不出

    虽然对Qwidget,QDialog,QMainWindow还是不甚理解,但是今天解决了个在QMainWindow中添加widget无法显示问题,相信很多小菜也是和我 一样最新熟悉的QDialog,在其中直接new一个label用个布局管理器在setLayout()一些就可以显示了,但是到QMainWindow却吧起作用,因为他没有这个成员函数(在manual中查找setLayout()没有看到QMainLayout).

    后来发现,其实是我们初学时没有对各个函数理解透,如果看了QHBoxLayout的manual就会知道他的一个构造函数是
QHBoxLayout(QWidget *parent);
    这样自然便会想到在初始话的把mainwindow传给他便可以了,这里传递this指针。结果却发现没有得到正解。
    求助google大神,从QT Assistant 中找到这句话:
Note: Creating a main window without a central widget is not supported. You must have a central widget even if it is just a placeholder.
    原来mainwindow必须要有个centralWidget.于是便给他一个widget。这时如我们所想,这个widget应该充满mainwindow的中央部分,然后我们在把他传给Layout。
      实验之,得正解。代码如下 

centralWidget=newQWidget;

label=newQLabel;[
button=newQPushButton;
label->setText(tr("I'm in central widget"));
setCentralWidget(centralWidget);
QHBoxLayout*mainLayout=newQHBoxLayout(this);
mainLayout->addWidget(label);
mainLayout->addWidget(button);

你可能感兴趣的:(职场,qt,控件,休闲,mainWindow)