crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
kenzoxai
  опции профиля:
сообщение 26.10.2012, 13:19
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 26.10.2012
Пользователь №: 3581

Спасибо сказали: 1 раз(а)




Репутация:   0  


Здравствуйте. подскажите пожалуйста, как правильно вставить объект класса QTableView в объект класса QWidget??

Я пытаюсь сделать что-то вроде этого, но QTableView не отображается в виджете.

Раскрывающийся текст
main.cpp

#include <QtGui>
#include "mywidget.h"
int main (int argc, char ** argv)

{
    QApplication app(argc,argv);

    mywidget wgt;
    wgt.show();


    QStringListModel model1;
    model1.setStringList(QStringList()<<"ttt"<<"rrr");

    QTableView * table1 = new QTableView;
    table1->setModel(&model1);
    table1->show();

    return app.exec();
}


mywidget.cpp

#include "mywidget.h"

#include <QtGui>
mywidget::mywidget(QWidget *parent) :
    QWidget(parent)
{

    QStringListModel model;
    model.setStringList(QStringList()<<"ttt"<<"rrr");

    QTableView * table = new QTableView;
    table->setModel(&model);


    QVBoxLayout *vbox = new QVBoxLayout;

    vbox->addWidget(table);
    setLayout(vbox);


}



Как видно из рисунка ниже, при прорисовке QTableView из main все идет отлично, а вот в QWidget_e представление не отображается. Подскажите в чем подвох?
 РЈРјРµРЅСЊС€РµРЅРѕ РґРѕ 55%
Прикрепленное изображение
582 x 299 (32.51 килобайт)
Причина редактирования: используй тег CODE
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kenzoxai
  опции профиля:
сообщение 26.10.2012, 13:50
Сообщение #2


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 26.10.2012
Пользователь №: 3581

Спасибо сказали: 1 раз(а)




Репутация:   0  


Нужно было
QStringListModel model;

определить как:

QStringListModel *model = new QStringListModel;

Но почему?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 26.10.2012, 13:51
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Может во втором классе нужно:
QStringListModel *model = new QStringListModel(this);
model->setStringList(QStringList()<<"ttt"<<"rrr");

QTableView * table = new QTableView(this);
table->setModel(model);
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.10.2012, 14:39
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kenzoxai @ 26.10.2012, 16:50) *
Нужно было
QStringListModel model;

определить как:

QStringListModel *model = new QStringListModel;

Но почему?
если ты про это место:
Цитата(kenzoxai @ 26.10.2012, 16:19) *
mywidget::mywidget(QWidget *parent) :
QWidget(parent)
{

QStringListModel model;
model.setStringList(QStringList()<<"ttt"<<"rrr");
...
}
, то рассуди сам: Ты внутри функции (конструкторе) создал в памяти объект model, затем функция закончилась (завершила свою работу) и все объекты созданные локально в ней, были удалены.

Читай в книжках темы:
- область видимости и срок жизни переменных
-- локальные переменные
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 12.6.2025, 19:05