crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Создание простого окнаа с кнопкой.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
trdm Дата 28.2.2009, 12:58
 
Цитата
void Test::cr() {
    QPushButton b("TEXT", this);
    b.show();
}

ты создаешь кнопку в стеке, а после выхода из функции она у тебя благополучно тут же и умирает.
а тут:
void Test::cr() {
    QPushButton* b = new QPushButton("TEXT", this);
    b->show();
}

живет, пока жив предок (поскольку передаешь парента в конструкторе, без этого была бы утечка...).
Кури области видимости переменных.
Antrix Дата 28.2.2009, 12:49
  Возможно глупый вопрос, НО почему так не отображается кнопка:

Раскрывающийся текст
Test.cpp
#include <QMainWindow>

class Test : public QMainWindow {
    Q_OBJECT
public:
    Test(QWidget* parent = 0);
    void cr();
};


main.cpp
#include <QtGui> 
#include "Test.h"

Test::Test(QWidget* parent) : QMainWindow(parent) {
}

void Test::cr() {
    QPushButton b("TEXT", this);
    b.show();
}

int main(int argc, char *argv[])  {
    QApplication app(argc, argv);
    Test t;
    t.cr();
    t.show();
    return app.exec();
}



А вот если так писать:
Раскрывающийся текст
void Test::cr() {
    QPushButton* b = new QPushButton("TEXT", this);
    b->show();
}


То все работает пучком.
Неужели в методах класса виджеты нужно создавать только через указатель?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 13:54