QTextBrowser SetHtml выдает пустой экран случайным образом

#html #qt

#HTML #qt

Вопрос:

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

Я использовал QTextBrowser-> SetHtml для отображения информации, форматирования информации и т.д.Информация включает в себя «жестко закодированные заголовки», а также «информацию, хранящуюся в базе данных sqlite».

В моей системе (ПК) он работает нормально, но когда я загрузил его в систему моих друзей (ПК), я получил пустой бланк. Это происходит в течение нескольких промахов, затем он начинает отображать промах.

Вот моя функция :-

 void PrintRecieptInfo::createHtml()
{
    htmlString.clear();

    const QStringList childGroup = settings->childGroups();

    if (childGroup.length() < MAXGROUPINRECIEPTSETTINGS){
        return;
    }

    initRecieptInfo();

    htmlString = "<table align='center' border='yes' width='450'>";

    if (rItem[1].status){
        if ((rItem[0].status) amp;amp; (rItem[0].text != "")){
            htmlString.append( "<tr><th colspan = '5'><font size='2'><img src='"       rItem[0].text   "'>"   rItem[1].text   "</th></tr>");
        }
        else {
            htmlString.append( "<tr><th colspan = '5'><font size='1'>"   rItem[1].text   "</th></tr>");
        }
    }

    if (rItem[2].status){
        htmlString.append("<tr><th colspan = '5'><font size='1'>"   rItem[2].text   "</th></tr>");
    }

    if (rItem[3].status){
        htmlString.append("<tr><th colspan = '5'><font size='1'>"   rItem[3].text   "</th></tr>");
    }

    if (rItem[4].status){
       htmlString.append("<tr><th colspan = '5'><font size='1'>"   rItem[4].text   "</th></tr>");
    }

    htmlString.append("<tr><td colspan='5'><hr></td></tr>");

    for (int i = 5 ; i < MAXMEMBER; i  ){

        if (rItem[i].status){
            htmlString.append("<tr><td width='80'>"   rItem[i].title   "</td><td width='80'>"   rItem[i].text   "</td><td width='50'></td>");

            int tempIndex = i 1;


            while(!rItem[tempIndex].status){
                tempIndex  ;
                if (tempIndex > MAXMEMBER){
                    break;
                }
            }
            if (tempIndex < MAXMEMBER){
                htmlString.append("<td width='80'>"   rItem[tempIndex].title   "</td><td width='80'>"   rItem[tempIndex].text   "</td>");
                htmlString.append("</tr>");
            }

            i = tempIndex;
        }
    }

    htmlString.append("<tr><th colspan='5'><hr></th></tr>");
    htmlString.append("<tr><th></th></tr>");
    htmlString.append("<tr><td></td><td></td><td></td><td></td><td align='right'>Operator Signature</td></tr>");

    htmlString.append("</table>");
    ui->printSlip_textBrowser->setHtml(htmlString);

}
 

Может кто-нибудь подсказать мне какое-нибудь решение этой проблемы??

Ответ №1:

Вы используете Windows? Если да, похоже, вам нужно скопировать каталог QTDIR / plugins / imageformats со своего компьютера на компьютер вашего друга.

Комментарии:

1. @llya спасибо за ваш ответ. Мне нужно подготовить отдельное приложение на основе клиента. Итак, я не могу скопировать этот каталог на клиентский компьютер. Могу ли я добавить эти плагины в файл .pro?? может дать мне больше информации об этом?? заранее спасибо

2. Прежде всего, убедитесь, что проблема в них . файлы dll. Если да, просто скопируйте каталог ‘imageformats’ рядом с вашим EXE-файлом (я уверен, что вы уже скопировали ‘платформы / qwindows. dll’ там). Или вам разрешено копировать только один EXE-файл?

3. @llya, спасибо за ваше руководство. Я пробовал с вашим решением. но проблема остается прежней. Он показывает пустой QTextBrowser.