Название: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 01, 2012, 09:37 Добрый день.
Делаю Код:
Далее я делаю обработку клика на любую ячейку, и он мне возвращает индексы row и cols той ячейки куда я произвёл клик. Теперь зная индекс строки в TableView я должен как-то выудить oid для этой записи. Как это сделать ? PS не знал тут создать тему или в разделе для новичков, т.к. думаю проблема не такая уж и сложная. Хотя рылся в манах и подходящей функции или связки функций не подобрал :-\ Название: Re: QSqlTableModel и индекс в TableView Отправлено: Igore от Март 01, 2012, 09:57 Можно через model::data(const QModelIndex & index, Qt::UserRole). Для Qt::UserRole возвратить oid, только зачем? Для редактирования и удаления он не нужен, при добавлении он не известен.
Название: Re: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 01, 2012, 10:13 Можно через model::data(const QModelIndex & index, Qt::UserRole). Для Qt::UserRole возвратить oid, только зачем? Для редактирования и удаления он не нужен, при добавлении он не известен. Да, нашёл вот только что QVariant QSqlTableModel::data ( const QModelIndex & index, int role = Qt::DisplayRole ) const [virtual] Только не понял назначение второго параметра в функции. Описание мана через переводчик "Возвращает данные, хранящиеся в данной роли предметов, упомянутых в индексе." Что за роль ? Интовская ) Название: Re: QSqlTableModel и индекс в TableView Отправлено: Igore от Март 01, 2012, 10:20 Цитировать Только не понял назначение второго параметра в функции. Описание мана через переводчик "Возвращает данные, хранящиеся в данной роли предметов, упомянутых в индексе." Что за роль ? Интовская ) Почитай документацию http://harmattan-dev.nokia.com/docs/library/html/qt4/qt.html#ItemDataRole-enum (http://harmattan-dev.nokia.com/docs/library/html/qt4/qt.html#ItemDataRole-enum) и про Model-View, view получает данные через data, ты можешь для себя определить новые роли через Qt::UserRole, и получать через них любые данные которые не отображены во view.Название: Re: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 01, 2012, 15:27 Реализуя так
по клику перехожу на слот Код: void MainWindow::ChildRecordForObj(QModelIndex index) в дебаге invalid значение rec :( Название: Re: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 01, 2012, 15:28 Можно через model::data(const QModelIndex & index, Qt::UserRole). Для Qt::UserRole возвратить oid, только зачем? Для редактирования и удаления он не нужен, при добавлении он не известен. Уточнение. Только Qt::UserRole возвращает oid ?Название: Re: QSqlTableModel и индекс в TableView Отправлено: Странник от Март 01, 2012, 15:43 Код: void MainWindow::ChildRecordForObj(QModelIndex index) Название: Re: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 01, 2012, 15:55 Код: void MainWindow::ChildRecordForObj(QModelIndex index) Код: ... Название: Re: QSqlTableModel и индекс в TableView Отправлено: Igore от Март 01, 2012, 16:29 Можно через model::data(const QModelIndex & index, Qt::UserRole). Для Qt::UserRole возвратить oid, только зачем? Для редактирования и удаления он не нужен, при добавлении он не известен. Уточнение. Только Qt::UserRole возвращает oid ?Код: QVariant MyModel::data(const QModelIndex& index, int role) const Название: Re: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 02, 2012, 08:47 Можно через model::data(const QModelIndex & index, Qt::UserRole). Для Qt::UserRole возвратить oid, только зачем? Для редактирования и удаления он не нужен, при добавлении он не известен. Уточнение. Только Qt::UserRole возвращает oid ?Код: QVariant MyModel::data(const QModelIndex& index, int role) const Код: _getOid(index); Название: Re: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 02, 2012, 09:11 Можно через model::data(const QModelIndex & index, Qt::UserRole). Для Qt::UserRole возвратить oid, только зачем? Для редактирования и удаления он не нужен, при добавлении он не известен. Уточнение. Только Qt::UserRole возвращает oid ?Код: QVariant MyModel::data(const QModelIndex& index, int role) const Код: void MainWindow::ChildRecordForObj(QModelIndex index) Код: QSqlField field = record.field("name"); Название: Re: QSqlTableModel и индекс в TableView Отправлено: Igore от Март 02, 2012, 11:50 Так, довай сначала.
У тебя есть таблица list_obj в которой есть поле oid, когда ты делаешь model->select(), у тебя это поле тоже должно выбраться. Значит ты каким то образом его убираешь. Самый правильный вариант это tableView->hideColumn(), во view данные не отображены, но они доступны. Цитировать Работаю в PSQL, и в таблице list_obj есть oid, он естественно в таблицу не выводится. Я не вижу ничего естественного что он сам не выводится. Для чего тебе вообще нужен oid? Для редактирования, удаления, добавление в QSqlTableModel он не нужен.Название: Re: QSqlTableModel и индекс в TableView Отправлено: bez_glaz от Март 05, 2012, 09:59 Так, довай сначала. При У тебя есть таблица list_obj в которой есть поле oid, когда ты делаешь model->select(), у тебя это поле тоже должно выбраться. Значит ты каким то образом его убираешь. Самый правильный вариант это tableView->hideColumn(), во view данные не отображены, но они доступны. Цитировать Работаю в PSQL, и в таблице list_obj есть oid, он естественно в таблицу не выводится. Я не вижу ничего естественного что он сам не выводится. Для чего тебе вообще нужен oid? Для редактирования, удаления, добавление в QSqlTableModel он не нужен.Код: model->select() |