Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt, Windows] Как прочитать файлы "*.odt", Help 
V
    Опции темы
dix75
Дата 14.8.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Добрый день!

В Qt есть возможность сохрания текста в файл в формате (OpenDocument Format (ODF) ).

Примерно таким образом:
Код

        QTextDocumentWriter writer(fileName);
        iwriter.write(text_edit_->document());


Но как прочитать все это дело обратно непонятно.

Если использовать совет из Qt Demo

Код

        QFile file(file_name);
        if(!file.open(QFile::ReadOnly)) return false;

        QByteArray data = file.readAll();
        QTextCodec* codec = Qt::codecForHtml(data);
        QString str = codec->toUnicode(data);

        if(Qt::mightBeRichText(str)) text_edit_->setHtml(str);
        else
        {
                str = QString::fromLocal8Bit(data);
                text_edit_->setPlainText(str);
        }


Но, таким образом, прочитать возможно лишь HTML - файлы. 



Это сообщение отредактировал(а) dix75 - 14.8.2009, 10:17


--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 14.8.2009, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @  14.8.2009,  10:08 Найти цитируемый пост)
Но как прочитать все это дело обратно непонятно.

Никак. Оно пока только записывать умеет. В Qt вообще нет классов, которые могут сохранить текст с картинками в какой-нибудь популярный формат типа pdf, doc (Word) и потом загружать его обратно для редактирования. Ждем.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ecspertiza
Дата 14.8.2009, 11:53 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Цитата(SABROG @  14.8.2009,  11:07 Найти цитируемый пост)
В Qt вообще нет классов, которые могут сохранить текст с картинками в какой-нибудь популярный формат типа pdf


Могу немного несогласиться, в pdf можно записать.

используя QPrinter.


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
SABROG
Дата 14.8.2009, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Не выдергивай слова из целого предложения. Прочти еще раз, речь идет не только о сохранении.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
ecspertiza
Дата 14.8.2009, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Да, извиняюсь, не доспалsmile


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
dix75
Дата 14.8.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(SABROG @  14.8.2009,  11:07 Найти цитируемый пост)
Никак. Оно пока только записывать умеет. В Qt вообще нет классов, которые могут сохранить текст с картинками в какой-нибудь популярный формат типа pdf, doc (Word) и потом загружать его обратно для редактирования. Ждем.

Прикольно, конечно.

Да похоже не только это.
лично я не могу записать картинку gif в бд.





--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 14.8.2009, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @  14.8.2009,  15:03 Найти цитируемый пост)
лично я не могу записать картинку gif в бд.

Выложи минимальный компилируемый пример. Когда я пробовал в последний раз записывать и читать .png в BLOB поле SQLITE БД все работало.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
dix75
Дата 14.8.2009, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



SABROG, 
нет png, jpeg, jpg, bmp 
читает и записывает без проблем.
gif только читает smile (думаю если сохранять файл и потом его читать, будет работать, но это как-то коряво ) 


--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 14.8.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @ 14.8.2009,  19:05)
SABROG, 
нет png, jpeg, jpg, bmp 
читает и записывает без проблем.
gif только читает smile (думаю если сохранять файл и потом его читать, будет работать, но это как-то коряво )

Как сохраняешь в БД, откуда (QPixmap/QImage)? Какими методами?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
dix75
Дата 15.8.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



SABROG, 

Как сохраняешь в БД, откуда (QPixmap/QImage)? Какими методами?

из QPixmap


Записываю так (передаю в функцию (запрос, имя файла, список параметров))

Код

//------------------------------------------------------------------------------
void vImageBD::add(const QString& inquiry, const QString& filename, const std::vector<QVariant>& value)
{
        QPixmap px(filename);
        QByteArray batmp;
        QBuffer bftmp(&batmp);
        bftmp.open(QIODevice::WriteOnly);
        px.save(&bftmp, QFileInfo(filename).completeSuffix().toAscii());

        QSqlQuery query(vMain::basebd().database());
        query.prepare(inquiry);
        query.addBindValue(batmp);        
        std::for_each(value.begin(), value.end(), boost::bind(&QSqlQuery::addBindValue,  query, _1, QSql::In));
        query.exec();
}


Вызываю функцию такм образом.

Код

        std::vector<QVariant> vec;
        vec.push_back(vMain::user().userID());
        vec.push_back(image->tag());
        vec.push_back(QDateTime::fromString(image->get_image_date()));
        vec.push_back(image->get_image_description());

        vImageBD::add("INSERT INTO PhotoGallery (Image, UserID, ImagePosition, ImageDate, ImageDescription) VALUES (?, ?, ?, ?, ?);",   image->file_name(), vec);


но gif так запихнуть не удается

Это сообщение отредактировал(а) dix75 - 15.8.2009, 12:10


--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 15.8.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @  15.8.2009,  11:54 Найти цитируемый пост)
но gif так запихнуть не удается


Потому, что ты не проверяешь результат команды save(). А вообще вот:

Цитата

BMP    Windows Bitmap    Read/write
GIF    Graphic Interchange Format (optional)    Read
JPG    Joint Photographic Experts Group    Read/write
JPEG    Joint Photographic Experts Group    Read/write
PNG    Portable Network Graphics    Read/write
PBM    Portable Bitmap    Read
PGM    Portable Graymap    Read
PPM    Portable Pixmap    Read/write
XBM    X11 Bitmap    Read/write
XPM    X11 Pixmap    Read/write


save() конвертирует уже распакованную картинку в новый формат. Можно вообще голые пиксели сохранять, вызвав QPixmap::toImage(), а там уже QImage::bits()/QImage::scanLine(n). Можно потом ужать, чтобы место меньше кушало через QByteArray::qCompress(). Можно все сохранять в .png. Но gif может быть анимационным, поэтому лучшего варианта, чем сохранять через QFile я не вижу.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0478 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.