在我的QMainWindow情況下能正常工作:傳遞一個QWidget到QPushButton QWidget的已傳遞到另一個階級後(按鈕不顯示)
MainWindow::MainWindow()
{
QStringList labels;
labels << tr("Title") << tr("Location");
widget = new QWidget;
setCentralWidget(widget);
QPushButton *b = new QPushButton(widget);
}
但是當控件傳遞這樣XmlReader reader(widget);
,我想做同樣的的XmlReader
代替MainWindow
構造喜歡:
XmlReader::XmlReader(QWidget *widget)
: widget(widget)
{
QPushButton *b = new QPushButton(widget);
}
它並不顯示。爲什麼?
編輯:這就像下面描述的,但它仍然沒有的XmlReader內
OK上班這是從sublassed部件的src的提取物。我現在請show()
在createButton()
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
}
void Widget::createButton()
{
QPushButton *b = new QPushButton(this);
b.show()
}
如果是的XmlReader我調用小窗口> createButton()和該按鈕被示出。適用於我。
但是,在XmlReader中調用QPushButton b = new QPushButton(widget)和b.show()將不會顯示按鈕。它不應該一樣嗎?
實際上'顯示()'做的工作。 'setCentralWidget()'或者使用一個可見的佈局來照顧這個。 'widget'只是一個帶附加方法的QWidget子類。 – tobilocker