Qt: QPushButton从未显示

3

我正在尝试学习Qt,涉及一个相当简单的应用程序:

#include <QtGui/QApplication>
#include <QPushButton>
#include <QDebug>

/* -- header begin {{{ */
class BareBase {
    public:
        BareBase();
};

class BareBones: public QApplication {

    private:
        BareBase* base;

    public:
        BareBones(int &argc, char **argv);
        ~BareBones();
};
/* -- header end }}} */


/* -- implementation begin {{{ */
BareBase::BareBase()
{
    QPushButton hello("Hello world!");
    hello.resize(100, 30);
    hello.show();
}

BareBones::BareBones(int& argc, char** argv): QApplication(argc, argv)
{
    qDebug() << "Creating new instance ... ";
    base = new BareBase();
}

BareBones::~BareBones()
{
    qDebug() << "Cleaning up ... ";
    delete base;
}

/* -- implementation end }}} */

int main(int argc, char **argv)
{
    //Q_INIT_RESOURCE(files);
    BareBones app(argc, argv);
    return app.exec();
}

现在的问题是,在BareBase中创建的按钮从未显示出来,我很困惑为什么?

2个回答

5

你的QPushButton创建和显示正确,但在离开BareBase构造函数时超出了作用域。使用成员变量或指针将解决您的问题。

如果您使用指针,则应将按钮添加到其父对象中。通过这种方式,当父对象被删除时,按钮将自动被删除。


-1

QPushButton 可能已经出现了,但并未出现在小部件的可见区域内。因此,您应将所有小部件添加到 Qt 中可用的 Layouts 中以获得所需的行为。请查看此文档here... 它还有一些示例...

此外,基本上您将拥有一个基础 QWidget 或最可能是 QMainWindow,其中包含您所有的控件.. 因此,您的 QPushButton 将位于 parent 小部件中.. 您的 QApplication 将包含应用程序特定信息,例如设置窗口、设置应用程序字体等。

希望对您有所帮助。


我不是很确定我理解了,但我会查看文档。那里的示例看起来很有前途。 - user350814

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接