Russian Qt Forum

Qt => Базы данных => Тема начата: hank от Февраль 08, 2011, 17:22



Название: Как обратиться к отдельной ячейке таблицы БД
Отправлено: hank от Февраль 08, 2011, 17:22
Здравствуйте.

Попробую обрисовать возникшую трудность. В Visual Studio я следующим образом использовал функции из стандартных библиотек, идущих в комплекте с PostgreSQL для вывода на экран содержимого конкретной ячейки таблицы БД:
Код:
PGconn     *conn;
conn = PQconnectdb(conninfo);

PGresult   *res;
res = PQexec(conn, "SELECT * FROM test");

printf("%15s ",PQgetvalue(res,i,j));

где i и j изменялись в пределах от нуля до соответственно PQntuples(res) и PQnfields(res).

Я хочу добиться схожего функционала в Qt, используя классы QSqlQueryModel, QSqlQuery и т.п. Пока я умею лишь выводить таблицу целиком через QSqlQueryModel.
В общем, вопрос: как мне реализовать доступ к определенной ячейке (интересует конкретно вывод содержимого на визуальные компоненты)?


Название: Re: Как обратиться к отдельной ячейке таблицm
Отправлено: shirushizo от Февраль 08, 2011, 17:51
Я хочу добиться схожего функционала в Qt, используя классы QSqlQueryModel, QSqlQuery и т.п.
...

Для модели, используй методы:
Код:
QVariant QAbstractItemModel::data ( const QModelIndex & index, int role = Qt::DisplayRole ) const
QModelIndex QAbstractItemModel::index ( int row, int column, const QModelIndex & parent = QModelIndex() ) const
например, model->data(model->index(i,j));
i и j от 0 до model->rowCount() и model->columnCount(), соответственно.

Либо для запроса, методы:
Код:
bool QSqlQuery::seek ( int index, bool relative = false )
QVariant QSqlQuery::value ( int index ) const

...интересует конкретно вывод содержимого на визуальные компоненты...
дальше методами QVariant::toInt(), QVariant::toString() преобразуй к необходимому виду и заноси в элементы управления -
QLabel::setText(QString text), QLineEdit::setText(QString text)  и пр.

А если интересуют data-ориентированные формы, используй QDataWidgetMapper на соседнем сайте (http://www.crossplatform.ru/?q=node/314)


Название: Re: Как обратиться к отдельной ячейке таблицm
Отправлено: hank от Февраль 09, 2011, 11:41
Спасибо. Возьму на вооружение.


Название: Re: Как обратиться к отдельной ячейке таблицы БД
Отправлено: lit-uriy от Февраль 09, 2011, 21:03
>>интересует конкретно вывод содержимого на визуальные компоненты
Глянь на QDataWidgetMaper (http://doc.crossplatform.ru/qt/4.5.0/qtsql.html#creating-data-aware-forms)