虽然对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);
[ 此帖被gota在2011-05-22 18:05重新编辑 ]