Qt: QPushButton никогда не появляется - PullRequest
3 голосов
/ 02 сентября 2010

Я пытаюсь выучить 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 голосов
/ 02 сентября 2010

Ваш QPushButton создается и отображается правильно, но выходит из области видимости при выходе из конструктора BareBase. Использование переменной-члена или указателя решит вашу проблему.

Если вы используете указатель, вы должны добавить свою кнопку к ее родителю. Таким образом, кнопка будет автоматически удалена, когда родитель будет удален.

0 голосов
/ 02 сентября 2010

QPushButton мог появиться, но не в видимой области виджета.Вот почему вы должны добавить все свои виджеты в Layouts , которые доступны в Qt, чтобы получить желаемое поведение.Посмотрите документы здесь ... Здесь также есть примеры ...

Кроме того, в основном у вас будет база QWidget или, скорее всего, QMainWindow, на котором будут присутствовать все ваши элементы управления .. Итак, ваш QPushButton будет в виджете parent . Ваш QApplication будет содержать информацию о вашем приложении, такую ​​как установкаокно, настройка шрифта для всего вашего приложения вроде как ..

Надеюсь, это поможет ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...