LINUX.ORG.RU

QListView не хочет отображаться, если вызывать внутри класса.


0

0

QListView не хочет отображаться, если вызывать внутри класса.

//--------main.cpp-------------------------
#include <QtGui>
#include "lwgt.h"

int main(int argc, char** argv)
{
QApplication app(argc, argv);
QWidget* nWidget = new QWidget();
QListView lview;
QStandardItemModel model;
QGridLayout* ptopLayout = new QGridLayout();
QStandardItem* item = new QStandardItem("text");
model.appendRow(item);
lview.setModel(&model);
ptopLayout->addWidget(new QLabel("Text1"),0,0);
ptopLayout->addWidget(&lview, 0, 1);
ptopLayout->addWidget(new QLabel("Text2"),0,2);
nWidget->setLayout(ptopLayout);
nWidget->show();

lwgt* wgt = new lwgt();
wgt->show();
return app.exec();
}

//---------------lwgt.cpp-----------------------
#include <QtGui>
#include "lwgt.h"
lwgt::lwgt(QWidget* pwgt/*= 0*/) : QWidget(pwgt)
{
QListView lview;
QStandardItemModel model;
QGridLayout* ptopLayout = new QGridLayout();
QStandardItem* item = new QStandardItem("text");
model.appendRow(item);
lview.setModel(&model);
ptopLayout->addWidget(new QLabel("Text1"),0,0);
ptopLayout->addWidget(&lview, 0, 1);
ptopLayout->addWidget(new QLabel("Text2"),0,2);
setLayout(ptopLayout);
}

//-----------------lwgy.h--------------------------
#ifndef _lwgt_h_
#define _lwgt_h_

#include <QWidget>

class lwgt : public QWidget {
Q_OBJECT
public:
lwgt(QWidget* pwgt = 0);
};
#endif //_lwgt_h_


Если вызывать из main() то список отображается, иначе игнорируется. Как это лечить?

anonymous

Стек, выделенный в main() будет жить до завершения работы программы. Стек, выделенный в конструкторе почистится когда конструктор завершится. Закончился конструктор -> вызвался деструктор lview.

Создавать обязательно в куче:

QListView * lview = new QListView;

C++, матчасть.

Dendy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.