Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QGraphicsScene
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Модель/Представление
Гость_september123432_*
привет всем! так как новичок, может быть и глупый вопрос...а вопрос такой . я создал форму в qt designer, создал проект и вставил туда саму форму.ui и form.h.. когда я создаю свой класс и унаследовал form.h, и написал код в свой конструкторе чтобы при вызыве конструкторе вызывал QGraphicsScene и отображал какие нибудь объекты...и получается что когда я вызваю свой класс, в QGraphicsScene объектов совсем нефига нет...
class CShow : public QWidget
{
public:
    CShow(QWidget* pwgt = 0) : QWidget(pwgt)
    {
        m_ui.setupUi(this);
        QGraphicsScene scene(QRectF(-100, -100, -300, 300));
        m_ui.graphicsView->setScene(&scene);
        QGraphicsTextItem* ptext = scene.addText("fdsdsf");
        m_ui.graphicsView->show();
    }
    Ui::Form m_ui;


но если этот код вставить к клиенстку часть программы все работает

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    CShow q;

    QGraphicsScene scene(QRectF(-100, -100, -300, 300));
    q.m_ui.graphicsView->setScene(&scene);
    QGraphicsTextItem* ptext = scene.addText("fdsdsf");
    q.m_ui.graphicsView->show();

    q.show();
    return a.exec();
}


объясните мне пожалуйста на примере почему так получается..
lanz
QGraphicScene заводится на стеке и после выхода из конструктора уничтожается (см. время жизни объектов в С++).
Надо сделать scene членом класса CShow или создавать ее на куче.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.