Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Разработка баз данных _ Копирование результатов запроса

Автор: peleduy 20.12.2014, 12:33

Делаю приложение для работы с PgSQL и не могу реализовать возможность выделения и копирования всех записей результатов запроса для переноса в текстовый редактор в частности для печати и т.п. Как это возможно решить средствами QT? Возможно требуется другой элемент управления, но пока у меня не получилось, например TextEdit ничего не отображает. Подскажите пожалуйста кто знает.

Автор: Litkevich Yuriy 20.12.2014, 14:37

Тебе нужно из модели копировать данные, см. тему:
"http://www.forum.crossplatform.ru/index.php?showtopic=2023&pid=18479&mode=threaded"

Автор: peleduy 21.12.2014, 8:21

Попробую, но мне кажется вопрос должен решаться проще.

Автор: lanz 22.12.2014, 20:21

Если попроще, можно переопределить mimeTypes и mimeData, чтобы они возвращали чистый форматированный текст.

Автор: peleduy 23.12.2014, 7:29

Цитата(lanz @ 22.12.2014, 20:21) *
Если попроще, можно переопределить mimeTypes и mimeData, чтобы они возвращали чистый форматированный текст.

Я еще не работал с mimeTypes и mimeData, если можно пожалуйста поподробнее...
Получилось вывести таблицу в текстовое поле с помощью предыдущей рекомендации (взял процедуру построчного копирования), вечером код по возможности представлю.

Автор: peleduy 23.12.2014, 17:07

query.exec("create table zeml (id int primary key, "
"date date, time interval, "
"shgr int, shmin int, dolgr int, dolmin int, "
"glub int, magn numeric, regi int)");


int Basa::copyTable() { //копирует таблицу из модели в QTextEdit
QSqlTableModel * model = new QSqlTableModel(0);
model->setTable("tbl");
model->setSort(0, Qt::AscendingOrder); //сортировка по возрастанию
model->select();
int n = model->rowCount();
QModelIndex index;
int i, j;
QString str;
for (i=0; i <= n-1; ++i)
{
if (i>0)
str += "\n";
for (j=0; j <= 9; ++j) //всего в таблице 10 полей (с 0 по 9)
{
if (j>-1)
index = model->index(i, j, QModelIndex());
QString t = model->data(index).toString();
str += t;
str += "\t"; //(убрал табуляцию в конец, чтобы таблица начиналась от края)
}
}
textqueryEdit->setText(str); //выводит таблицу в QTextEdit
return 0;
}

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)