Russian Qt Forum

Qt => Model-View (MV) => Тема начата: nono от Апрель 26, 2011, 22:08



Название: смена таблицы в модели и не отображения данных в предсталении
Отправлено: nono от Апрель 26, 2011, 22:08
У меня возникла следующая проблема:
Я создал таблицу QTableView и установил в ней модель QSqlRalationalTableModel, после при выборе таблицы я устанавливаю в модель определенную таблицу (при чем таблица в модели меняется т. е. одна модель работает с разными таблицами) приведу небольшой пример:

   QTableView *table = new QtableView(this);
   QSqlRelationalTableModel *model = QsqlRelationalTableModel(this);
   table->setModel(model);
   …
   определенный код
   …
   в зависимости от условия устанавливаю таблицу
   switch (value) {
      case a:
         model->setTable(«table-a»);
         break;
      case b:
         model->setTable(«table-c»);
         break;
      …
   }

Вот теперь в таблице ничего не отобразиться!
Подскажите пожалуйста чего не хватает???


Название: Re: смена таблицы в модели и не отображения данных в предсталении
Отправлено: chu от Апрель 26, 2011, 23:18
model->select;


Название: Re: смена таблицы в модели и не отображения данных в предсталении
Отправлено: nono от Апрель 27, 2011, 00:16
chu, так пробовал уже - нито!!!
Мне кажется там что то с самим представлением потому что если как надо установить таблицу в модель до того, как саму модель установить в представление все работает.....тока вот наоборот не получается.... после установки модели в представление, устанавливать таблицы...может после установки таблицы надо как нибудь представление обновить....только как???


Название: Re: смена таблицы в модели и не отображения данных в предсталении
Отправлено: chu от Апрель 27, 2011, 01:55
chu, так пробовал уже - нито!!!
Мне кажется там что то с самим представлением потому что если как надо установить таблицу в модель до того, как саму модель установить в представление все работает.....тока вот наоборот не получается.... после установки модели в представление, устанавливать таблицы...может после установки таблицы надо как нибудь представление обновить....только как???
Создай 2 модели, а в switch запиши table->setModel(model1 или model2)


Название: Re: смена таблицы в модели и не отображения данных в предсталении
Отправлено: nono от Апрель 27, 2011, 09:48

Создай 2 модели, а в switch запиши table->setModel(model1 или model2)
[/quote]
Так я уже делал...только мне прийдется создавать не две модели а шесть...(я просто сокращенный пример привел)
причем надо это дело динамически регулировать, типа что-то вроде:
switch ..
..
delete table->model();
table->setModel(model5);
..
Такой вариант работает нормально..просто я хотел бы оптимизировать....ну считай постоянно либо создавать и удалять модели....либо создать все шесть моделей и выбирать потом нужную.....а так создал и установил одну модель....и меняешь в ней таблицу


Название: Re: смена таблицы в модели и не отображения данных в предсталении
Отправлено: nono от Апрель 27, 2011, 10:45
Есть вариант после switch записать следующую конструкцию:

table->setModel(0);
model->select();
table->setModel(model);

Но все таки.....вызывать постоянно метод setModel не совсем логически правильно(мне кажется). Есть ли какая нибудь функция которая перезагружала модель в представлении???