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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QTextBrowser Изменить html в runtime [РЕШЕНО]  (Прочитано 8596 раз)
Aleksey
Гость
« : Сентябрь 27, 2012, 09:04 »

Здравствуйте.

На маленькой форме нужно организовать выбор товара.

Товар - это картинка и текст.

Все товары (их не много) должны быть включены в exe файл.



Решил все организовать с помощью QTextBrowser и пары кнопок.
Научился добавлять в ресурсы программы картинки для html QTextBrowser.

Вопрос: можно ли добавить в ресурсы программы набор разных html для каждого товара и как их в runtime загрузить в QTextBrowser?

Спасибо за внимание.
« Последнее редактирование: Сентябрь 27, 2012, 14:02 от Aleksey » Записан
Bepec
Гость
« Ответ #1 : Сентябрь 27, 2012, 09:10 »

Мда. У меня рука не поднимается описать все мои чуйства Улыбающийся

Суй свои товары в qrc.

setSource() поможет засунуть в TextBrowser.

Записан
Aleksey
Гость
« Ответ #2 : Сентябрь 27, 2012, 09:52 »

Суй свои товары в qrc.
setSource() поможет засунуть в TextBrowser.

Верес, я сделал так:
Засунул html в qrc файл, вот его содержание:
Код:
<RCC>
    <qresource prefix="/ru_images">
        <file>Res_RU/images/hare_ru.jpg</file>
    </qresource>
    <qresource prefix="/ru_html">
        <file>Res_RU/html/hare_ru.html</file>
    </qresource>
</RCC>

Затем, при старте формы попробовал загрузить html вот так:
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // tb_good is QTextBrowser
    ui->tb_good->setSource( QString(":/ru_html/Res_RU/html/hare_ru.html") );
    ui->tb_good->show();
}

После запуска TextBrowser пуст Грустный
Записан
Bepec
Гость
« Ответ #3 : Сентябрь 27, 2012, 10:12 »

Код:
setSource(QUrl::fromLocalFile("тутВашПуть"));
Записан
Aleksey
Гость
« Ответ #4 : Сентябрь 27, 2012, 10:18 »

Код:
setSource(QUrl::fromLocalFile("тутВашПуть"));

Верес, большое спасибо. Заработало. Появилась и картинка и текст.

Только вместо русских букв почему-то кракозябры, хотя html код я один в один копировал из свойств обьекта QTextBrowser в конструкторе формы.
Записан
Bepec
Гость
« Ответ #5 : Сентябрь 27, 2012, 10:20 »

Нууу... А кодеки на русский язык вы установили? Улыбающийся
Код:
#include <QTextCodec>
Код:
QTextCodec::setCodecForTr(QTextCodec::codecForName("Windows-1251"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("Windows-1251"));
std::locale loc("russian_russia.1251");
std::locale::global(loc);

Пропиши в мейне.
Записан
Aleksey
Гость
« Ответ #6 : Сентябрь 27, 2012, 11:28 »

Нууу... А кодеки на русский язык вы установили? Улыбающийся
Пропиши в мейне.

Усп, про кодеки я ничего не знаю. Придется почитать.

Код вставил, не работает. При старте выдает runtime ошибку. Чего-то создать не может.

В консоли такой текст:
terminate called after throwing an instance of 'std::runtime_error'
  what():  locale::facet::_S_create_c_locale name not valid
 
Записан
Bepec
Гость
« Ответ #7 : Сентябрь 27, 2012, 12:03 »

Упс Улыбающийся У тебя ж не винда наверно Улыбающийся  UTF-8 везде поставь, должно тогда заработать.

Хотя не уверен, что в QTextBrowser кодировка автоматом не ставится.
Ты html код в чём сохраняешь? в какой кодировке? А в заголовке html указываешь кодировку? Улыбающийся
Записан
Aleksey
Гость
« Ответ #8 : Сентябрь 27, 2012, 12:54 »

Верес, у меня винда. Сорри, что не сообщил ранее. Консоль я имел ввиду qtCreator'а.

html я беру и копирую из окошка свойств обьекта QTextBrowser и вставляю в открытый нотепад, затем сохраняю как html. В какой кодировке я это делаю - не знаю. Указания кодировки в таком html нет. Я пробовал его добавлять в строчку "<meta name="qrichtext" content="1" />", указание кодировки: "<meta name="qrichtext" content="1; charset=utf-8"/>".
Не помогло. Менял кодировку на другую (windows-1251) - не помогает.

А что делает строчка "std::locale loc("russian_russia.1251");"? Похоже, ломается на ней.

Я думаю, что преобразование русских букв, которые я пишу в дизайнере форм в свойствах компонентов, преобразуются в юникод на этапе компиляции. То есть в QTextBrowser кодировка автоматом не ставится.


Записан
Bepec
Гость
« Ответ #9 : Сентябрь 27, 2012, 13:03 »

В дизайнере все свойства, все компоненты и прочее хранится в Unicode Улыбающийся Собственно потому у тебя там на кнопочках могут быть русские буковки, без установки кодировки Улыбающийся

В общем цимус - берёшь в своём браузере сохраняешь эту страницу Улыбающийся Да да, вот эту! Да да, на которой я пишу Веселый

И суёшь этот html себе в textBrowser.

Код:
if (видны русские буковки)
{
 смотришь где указана кодировка и её копируешь
}
else
{
хз что у тебя там, у меня всё работает :D
}
Записан
Aleksey
Гость
« Ответ #10 : Сентябрь 27, 2012, 13:29 »

Верес, спасибо за идею. Улыбающийся Сохранил pda.compulenta.ru и QTextBrowser отобразил страничку с русскими буквами. Буду искать определение кодировки.
Записан
Bepec
Гость
« Ответ #11 : Сентябрь 27, 2012, 13:39 »

Код:
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

Вот осталось только определиться в какой кодировке у тебя в html ке текст Веселый

PS а заяца такой откуда? Хочу такого Веселый
« Последнее редактирование: Сентябрь 27, 2012, 13:41 от Bepec » Записан
Aleksey
Гость
« Ответ #12 : Сентябрь 27, 2012, 13:50 »

Да.

Вот такой код открывается QTextBrowser нормально:
Код:
<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
        </head>
        <body>
Тест русских букв
        </body>
</html>

*.htm файл в кодировке windows-1251, надо полагать. Я его редактирую в qt creator.

А заяц из гугла. Улыбающийся
Сделал поиск еще раз. Вот, он существует и в не цифровом виде: http://www.1c-interes.ru/catalog/all7154/10902568/
Записан
Bepec
Гость
« Ответ #13 : Сентябрь 27, 2012, 13:52 »

В заголовок темы пихни [РЕШЕНО]. Ну или удали тему Улыбающийся Таких овродя много Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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