Название: QSqlTableModel Отправлено: Krow от Август 31, 2007, 08:16 На форме есть QTableView, Так же с этой формы идёт вызов другой формы на которой идёт добавление данных в базу данных отражённую в QTableView с первой формы.
Суть вопроса такова, как сделать так чтобы при добавлении данных со второй это автоматически отражалось на первой форме. т.е. происходило что то вроде model->select() если бы это всё происходило на первой форме. надеюсь я выразился правильно... заране спасибо Название: Re: QSqlTableModel Отправлено: bigirbis от Август 31, 2007, 09:19 ИМХО, единственный вариант:
Название: Re: QSqlTableModel Отправлено: WW от Август 31, 2007, 10:39 Если у тебя вторая форма основана на той же модели, что и TableView - то ничего делать не надо.
Название: Re: QSqlTableModel Отправлено: Krow от Август 31, 2007, 11:09 ИМХО, единственный вариант:
а поподробнее??? Название: Re: QSqlTableModel Отправлено: Krow от Август 31, 2007, 11:11 Если у тебя вторая форма основана на той же модели, что и TableView - то ничего делать не надо. нет, вторая форма это обычный потомок QWidget на котором расположены QLineEdit для добавления данных.Название: Re: QSqlTableModel Отправлено: WW от Август 31, 2007, 11:17 нет, вторая форма это обычный потомок QWidget на котором расположены QLineEdit для добавления данных. а кто мешает замапить его на ту же модель? потом просто в модели добавил строку программно, дал возможность юзеру заполнить поле. после закрытия формы твое TableView уже будет содержать всю инфу.Название: Re: QSqlTableModel Отправлено: bigirbis от Август 31, 2007, 11:58 Вариант. Но не всегда удачным решением является передача модели...
Название: Re: QSqlTableModel Отправлено: Krow от Август 31, 2007, 14:31 нет, вторая форма это обычный потомок QWidget на котором расположены QLineEdit для добавления данных. а кто мешает замапить его на ту же модель? потом просто в модели добавил строку программно, дал возможность юзеру заполнить поле. после закрытия формы твое TableView уже будет содержать всю инфу.В общем как сделал так думаю будет правильней (с моей точки зрения) но вопрос не снят...вопрос как можно сделать рефреш из другой формы, не наследовать же вторую форму от первой??? Название: Re: QSqlTableModel Отправлено: denka от Август 31, 2007, 15:04 Попробуй QDataWidgetMapper
Название: Re: QSqlTableModel Отправлено: Krow от Август 31, 2007, 15:20 Попробуй QDataWidgetMapper а это что за зверь и с чем его едят?? раньше не сталкивался с этим...Название: Re: QSqlTableModel Отправлено: WW от Август 31, 2007, 15:24 Попробуй QDataWidgetMapper а это что за зверь и с чем его едят?? раньше не сталкивался с этим...Название: Re: QSqlTableModel Отправлено: Krow от Август 31, 2007, 16:33 Попробуй QDataWidgetMapper а это что за зверь и с чем его едят?? раньше не сталкивался с этим...Название: Re: QSqlTableModel Отправлено: denka от Август 31, 2007, 16:51 Читаем Assistant:
Цитировать The QDataWidgetMapper class provides mapping between a section of a data model to widgets. То есть данный класс отображает определенную секцию модели в конкретный виджет. При изменении текущего индекса все виджеты в которые происходит отображение будут обновлены из модели. А при изменении данных в виджете они(данные) будут заноситься в модель. А вобще думаю все таки для начало не мешало бы тебе заглянуть в Assistant:)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. Название: Re: QSqlTableModel Отправлено: Krow от Август 31, 2007, 17:21 den'ka спасиб за разъяснение.
я глянул в асисстант )) но толкм не понял поэтому решил спросить как это звучит по русски :))) Название: Re: QSqlTableModel Отправлено: -QT- от Сентябрь 03, 2007, 15:38 Скажите а это для всех моделей работает ?
Я на самописной модели пытался применить вот так: Код: QDataWidgetMapper *mapper = new QDataWidgetMapper(); Результата никакого ни ошибок ни отображения :-\ Название: Re: QSqlTableModel Отправлено: denka от Сентябрь 03, 2007, 16:14 Может ты как то не так модель реализовал?
Название: Re: QSqlTableModel Отправлено: -QT- от Сентябрь 04, 2007, 08:46 Может ты как то не так модель реализовал? Может быть.Модель для чтения - реализации для редактирования нет создавал из QAbstractItemModel и определял свой Node. Наверное проблема в этом - вот только не пойму она же должна на отображение то работать или нет ? Название: Re: QSqlTableModel Отправлено: denka от Сентябрь 04, 2007, 09:08 А у тя данные возврощаються только по Qt::DisplayRole?
Я тут глянул исходники QDataWidgetMapper данные там устанавливаються через делегат, а у делегата уже в setEditorData данные выбираються с помощью Qt::EditRole. Может правда я чета не так понял. Название: Re: QSqlTableModel Отправлено: -QT- от Сентябрь 04, 2007, 12:25 да данные возвращаются только по Qt::DisplayRole.
Видимо нужна реализация с Qt::EditRole (если я правильно понял) ??? Название: Re: QSqlTableModel Отправлено: denka от Сентябрь 04, 2007, 12:41 Получаеться так... Или писать свой делегат :)
Очень жаль что в ассистенте об этом не написано... Название: Re: QSqlTableModel Отправлено: Krow от Сентябрь 06, 2007, 11:16 этот вопрос косвенно касается моего предыдущего в данной теме.
есть форма в MDI приложении вызываетсяы она с QMainWindow соответвенно при добавлении её к уже существующему экземпляру QWorkspace проблем не доставляет. так вот с этой формы вызываетсчя новая форма, как её можно так же привязать к уже существующему экземпляру QWorkspace? Название: Re: QSqlTableModel Отправлено: denka от Сентябрь 06, 2007, 11:37 На скока я понял проблема в не доступности workspace в первой форме.
Можно сделать так: Код: ... Название: Re: QSqlTableModel Отправлено: -QT- от Сентябрь 06, 2007, 14:03 Сделал реализацию setData() в модели вообще пурга пошла....
Пытаюсь поставить .... Все дошло нуно асситант читать правильно ;D ;D >:( >:( :o :o Название: Re: QSqlTableModel Отправлено: Krow от Сентябрь 06, 2007, 19:14 не буду открывать новый топик...
проблема в следующем.. собрал таки в винде свою програмку. всё вроде бы хорошо, только вот при добавлении в мускульную базу юникод данных (по умолчанию мускул настроен на эту кодировку) QTableView выдает вместо русского шрифта сплошные вопросы, в лине работало отлично всё. как это можно исправить? Название: Re: QSqlTableModel Отправлено: -QT- от Сентябрь 07, 2007, 08:01 не буду открывать новый топик... проблема в следующем.. собрал таки в винде свою програмку. всё вроде бы хорошо, только вот при добавлении в мускульную базу юникод данных (по умолчанию мускул настроен на эту кодировку) QTableView выдает вместо русского шрифта сплошные вопросы, в лине работало отлично всё. как это можно исправить? А у тебя типа fromUtf8() нету если есть заменить на fromLocal8bit и правильно устанавливать локальную кодировку. Название: Re: QSqlTableModel Отправлено: -QT- от Сентябрь 07, 2007, 08:04 Сделал реализацию setData() в модели вообще пурга пошла.... В общем реализацию я сделал НО немогу спозиционировать на нужную запись.Пытаюсь поставить .... Все дошло нуно асситант читать правильно ;D ;D >:( >:( :o :o Вот в чем вопрос (Ну почти Шекспир ;D) Название: Re: QSqlTableModel Отправлено: Krow от Сентябрь 07, 2007, 10:17 не буду открывать новый топик... проблема в следующем.. собрал таки в винде свою програмку. всё вроде бы хорошо, только вот при добавлении в мускульную базу юникод данных (по умолчанию мускул настроен на эту кодировку) QTableView выдает вместо русского шрифта сплошные вопросы, в лине работало отлично всё. как это можно исправить? А у тебя типа fromUtf8() нету если есть заменить на fromLocal8bit и правильно устанавливать локальную кодировку. у базы дефолтовая кодировка утф8... пишу в лине, а в винде только собираю для виндовых пользователей.... кстати вопрос. пускай програ непрально базу отображает щас... собрал я её пользую MS Visual Studio 2005. пытаюсь запустить на другом компе эту программу, пишет программа не запускается и всё... и как тут понять как её запускать надо???? Название: Re: QSqlTableModel Отправлено: Krow от Сентябрь 08, 2007, 13:54 На скока я понял проблема в не доступности workspace в первой форме. Можно сделать так: Код: ... сделал как ты написал. форма добавляется в workspace, но после добавления программа зависает и не реагирует ни на что... пыталдлся сделать вот так после Код: f->show(); не помогает. программа просто не отвечает ни накакие сигналы из вне... Название: Re: QSqlTableModel Отправлено: Krow от Сентябрь 08, 2007, 14:20 вот функиция создания дочернего окна:
Код: void fDisk::createDiskInsert() Название: Re: QSqlTableModel Отправлено: Krow от Сентябрь 16, 2007, 12:24 сори за поднятие тему вверх без новго вопроса... но предыдущий ещё актуален. не могу найти решение :(
|