2016-01-22 25 views
-1

在我的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()將不會顯示按鈕。它不應該一樣嗎?

回答

1

你的例子太短了。什麼樣的小部件是'小部件'?你是否在'widget'或按鈕的任何位置調用show()?你是否在使用小部件的佈局?你是否將按鈕添加到佈局中?

+0

實際上'顯示()'做的工作。 'setCentralWidget()'或者使用一個可見的佈局來照顧這個。 'widget'只是一個帶附加方法的QWidget子類。 – tobilocker

0

你做錯了:父母對顯示對象沒有任何幫助。

必須使用lauot mechanish把按鈕,你需要,或使用setGeometry方法

+0

請澄清你的答案,因爲它沒有'setGeometry'或使用佈局工作。 – tobilocker

+0

@tobilocker解釋你正在嘗試做什麼。爲什麼你試圖在XmlReader中創建按鈕?什麼是XmlReader?你如何使用它? – Jeka

相關問題