Russian Qt Forum
Июля 01, 2025, 01:06 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: QSqlTableModel  (Прочитано 17063 раз)
Krow
Гость
« : Августа 31, 2007, 08:16 »

На форме есть QTableView, Так же с этой формы идёт вызов другой формы на которой идёт добавление данных в базу данных отражённую в QTableView с первой формы.
Суть вопроса такова, как сделать так чтобы при добавлении данных со второй это автоматически отражалось на первой форме. т.е. происходило что то вроде model->select() если бы это всё происходило на первой форме.
надеюсь я выразился правильно... заране спасибо
Записан
bigirbis
Гость
« Ответ #1 : Августа 31, 2007, 09:19 »

ИМХО, единственный вариант:
  • перед вызовом второй формы запомнить текущий индекс,
  • вызвать форму,
  • установить текущий индекс.
Записан
WW
Гость
« Ответ #2 : Августа 31, 2007, 10:39 »

Если у тебя вторая форма основана на той же модели, что и TableView - то ничего делать не надо.
Записан
Krow
Гость
« Ответ #3 : Августа 31, 2007, 11:09 »

ИМХО, единственный вариант:
  • перед вызовом второй формы запомнить текущий индекс,
  • вызвать форму,
  • установить текущий индекс.

а поподробнее???
Записан
Krow
Гость
« Ответ #4 : Августа 31, 2007, 11:11 »

Если у тебя вторая форма основана на той же модели, что и TableView - то ничего делать не надо.
нет, вторая форма это обычный потомок QWidget на котором расположены QLineEdit для добавления данных.
Записан
WW
Гость
« Ответ #5 : Августа 31, 2007, 11:17 »

нет, вторая форма это обычный потомок QWidget на котором расположены QLineEdit для добавления данных.
а кто мешает замапить его на ту же модель? потом просто в модели добавил строку программно, дал возможность юзеру заполнить поле. после закрытия формы твое TableView уже будет содержать всю инфу.
Записан
bigirbis
Гость
« Ответ #6 : Августа 31, 2007, 11:58 »

Вариант. Но не всегда удачным решением является передача модели...
Записан
Krow
Гость
« Ответ #7 : Августа 31, 2007, 14:31 »

нет, вторая форма это обычный потомок QWidget на котором расположены QLineEdit для добавления данных.
а кто мешает замапить его на ту же модель? потом просто в модели добавил строку программно, дал возможность юзеру заполнить поле. после закрытия формы твое TableView уже будет содержать всю инфу.
Всё от пользователя зависит. И от Привычек пользователей. Думал над таким вариантом, но всё же решил на более традиционном способе для пользователей остановиться.
В общем как сделал так думаю будет правильней (с моей точки зрения)

но вопрос не снят...вопрос как можно сделать рефреш из другой формы, не наследовать же вторую форму от первой???
Записан
denka
Гость
« Ответ #8 : Августа 31, 2007, 15:04 »

Попробуй QDataWidgetMapper
Записан
Krow
Гость
« Ответ #9 : Августа 31, 2007, 15:20 »

Попробуй QDataWidgetMapper
а это что за зверь и с чем его едят?? раньше не сталкивался с этим...
Записан
WW
Гость
« Ответ #10 : Августа 31, 2007, 15:24 »

Попробуй QDataWidgetMapper
а это что за зверь и с чем его едят?? раньше не сталкивался с этим...
это как раз и мапит отдельные виджеты на модель.
Записан
Krow
Гость
« Ответ #11 : Августа 31, 2007, 16:33 »

Попробуй QDataWidgetMapper
а это что за зверь и с чем его едят?? раньше не сталкивался с этим...
это как раз и мапит отдельные виджеты на модель.
что то значит мапит? Я ж говорю я с этим не связывался ещё...
Записан
denka
Гость
« Ответ #12 : Августа 31, 2007, 16:51 »

Читаем Assistant:
Цитировать
The QDataWidgetMapper class provides mapping between a section of a data model to widgets.
QDataWidgetMapper can be used to create data-aware widgets by mapping them to sections of an item model. A section is a column of a model if the orientation is horizontal (the default), otherwise a row.
Every time the current index changes, all widgets are updated with the contents from the model. If the user edits the contents of the widget, the changes are written back to the model.
То есть данный класс отображает определенную секцию модели в конкретный виджет. При изменении текущего индекса все виджеты в которые происходит отображение будут обновлены из модели. А при изменении данных в виджете они(данные) будут заноситься в модель. А вобще думаю все таки для начало не мешало бы тебе заглянуть в Assistant:)
Записан
Krow
Гость
« Ответ #13 : Августа 31, 2007, 17:21 »

den'ka спасиб за разъяснение.
я глянул в асисстант )) но толкм не понял поэтому решил спросить как это звучит по русски Улыбающийся))
Записан
-QT-
Гость
« Ответ #14 : Сентября 03, 2007, 15:38 »

Скажите а это для всех моделей работает ?
Я на самописной модели пытался применить вот так:

Код:
   QDataWidgetMapper *mapper = new QDataWidgetMapper();
    mapper->setModel(model);
    mapper->addMapping(lineEditNameJob, 0);
    mapper->addMapping(spinBoxPlanDay, 2);
    mapper->toFirst();

Результата никакого ни ошибок ни отображения  В замешательстве
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.028 секунд. Запросов: 18.