将QWidget传递给另一个类后,将QWidget传递给QPushButton(Button未显示)

时间:2016-01-22 15:00:51

标签: c++ qt

在我的QMainWindow实例中,这很好用:

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中使用

确定这是来自子窗口小部件的src的摘录。我现在在show()

中致电createButton()
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
}

void Widget::createButton()
{
    QPushButton *b = new QPushButton(this);
    b.show()
}

然后在XmlReader中我调用widget-&gt; createButton()并显示按钮。适合我。

但是,在XmlReader中调用QPushButton b = new QPushButton(widget)和b.show()仍然不会显示按钮。不应该一样吗?

2 个答案:

答案 0 :(得分:1)

你的例子太短了。什么样的小部件是'小部件'?你在“小工具”或按钮的任何地方调用show()吗?你在使用widget的布局吗?你是否将按钮添加到布局中?

答案 1 :(得分:0)

你做错了:父母对显示对象没有任何意义。

您必须使用lauot mechanish将按钮放在您需要的位置,或使用setGeometry方法