Russian Qt Forum
Сентябрь 23, 2024, 02:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTableWidget - сохранение в XML  (Прочитано 7311 раз)
Digan
Гость
« : Март 06, 2011, 14:00 »

Есть ли в Qt механизм для упрощения сохранения структуры таблицы QTableWidget в формат XML? Или придется в ручную строить всю структуру XML? Или может есть другой способ сохранения таблицы?

Заранее спасибо.
Записан
Stiff
Гость
« Ответ #1 : Март 06, 2011, 22:14 »

Или придется в ручную строить всю структуру XML? Или может есть другой способ сохранения таблицы?
Стандартных механизмов для этого нет, вы сами должны определить структуру файла. А вот для записи используйте qxmlstreamwriter или модуль QtXML
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Март 07, 2011, 01:49 »

Пожалуйста, не делайте этого. Не далее как 5 дней назад пришлось парсить хмл, написанный такими "умниками". 66 метров файлик весил, причем реально нужных данным там метров 20, остальное - инфа о размере ячеек, шрифтах и стилях оформления (да-да, на каждую ячейку хранились ее видтх и хейгхт, а также все параметры). При этом различия были только в столбцах. Вместо 20 полей по столбцам хранилось 20*20000 веселых тегов.
Так что напишите свой формат, обычно нужно даже не все данные, а например можно айдишник выцепить, по к-ому данные можно восстановить.
Записан
Digan
Гость
« Ответ #3 : Март 07, 2011, 16:00 »

Да мне только информацию из ячеек и нужно хранить, плюс количество строк к таблице.

Жаль, что нет возможности быстро таблицу перенести в xml.
Когда знакомился с Bold MDA там была такая возможность. Но как Bold так и Delphi считаю мертвыми.

Что же. Буду в ручную заполнять xml. А свой формат это слишком для такой задачи.
У xml к тому есть большой плюс - его целостность легко проверяется.  
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Март 09, 2011, 10:08 »

Вот когда-то писал для себя экспорт модели в xml. Думаю, пригодится.
Код
C++ (Qt)
void DBFRedactorMainWindow::exportToXml(const QString& fileName)
{
QFile file(fileName);
if (!file.open(QIODevice::WriteOnly)) {
QMessageBox::critical(this, "", tr("Error save to file.\n%1").arg(file.errorString()));
return;
}
 
QXmlStreamWriter stream(&file);
stream.setAutoFormatting(true);
stream.writeStartDocument();
stream.writeStartElement("ROWDATA");
 
for (int i = 0, rowCount = view->model()->rowCount(); i < rowCount; i++) {
stream.writeStartElement("ROW");
 
for (int j = 0, columnCount = view->model()->columnCount(); j < columnCount; j++) {
const QVariant& value = view->model()->index(i, j).data(Qt::DisplayRole);
stream.writeTextElement(view->model()->headerData(j, Qt::Horizontal, Qt::EditRole).toString(),
value.toString());
}
stream.writeEndElement();
}
 
stream.writeEndElement();
stream.writeEndDocument();
file.close();
 
QMessageBox::information(this, "", tr("Export finished"));
}
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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