2015-07-24 4 views
1

Я борюсь с проблемой QT5. Я пытаюсь построить (а затем нарисовать на объекте QPainter) таблицу HTML. Это мой код:QTextDocument HTML Ширина таблицы

QTextDocument td; 
QString table_style= QString("<style type=\"text/css\">" 
          ".tg { table-layout: fixed; width: 200px; }" 
          ".tg td{padding-bottom: 5px;border-style:solid;border-width:0px;}" 
          ".tg .tg-3x1q{color: rgba(255, 255, 255, 0.5); text-align:right}" 
          ".tg .tg-6bqv{color: rgba(255, 255, 255, 0.5); padding-left: 5px;}" 
          "</style>"); 

QString table_html = QString(" <table width=\"500px\" class=\"tg\">" 
          "<tr>" 
           "<td class=\"tg-3x1q\" width=\"150px\">1</td>" 
           "<td class=\"tg-6bqv\" width=\"150px\"><sup>th</sup></td>" 
          "</tr>" 
          "<tr>" 
           "<td class=\"tg-3x1q\" width=\"150px\">2</td>" 
           "<td class=\"tg-6bqv\" width=\"150px\"><sup>rpm</sup></td>" 
          "</tr>" 
          "<tr>" 
           "<td class=\"tg-3x1q\" width=\"150px\">3</td>"     
           "<td class=\"tg-6bqv\" width=\"150px\"><sup>km/h</sup></td>" 
          "</tr>" 
          "</table>"); 

td.setDefaultStyleSheet(table_style); 
td.setHtml(table_html); 
td.drawContents(painter); 

Таблица правильно показана в живописи, но не имеет фиксированной ширины столбца. Для того, чтобы достичь этого результата, я попытался почти все: (! Но ширина)

  • Установка table-layout: fixed, но из QT's docs не поддерживается
  • Установки width с или без двойных кавычек, относительно или абсолютно
  • Вставки в каждой ячейке a div с фиксированной шириной
  • Пробовал (в соответствии с этим вопросом http://www.qtcentre.org/threads/31661-QTextDocument-style-CSS-does-not-work), чтобы добавить стиль с телом. Как это

    td.setHtml(table_style + table_html); 
    

Ни один из этих способов работали. Более того, если я попытаюсь добавить некоторые пробелы для прокладки строки, они были обрезаны после того, как таблица была нарисована. Я также прочитал, что могу использовать WebView для достижения результата, но он слишком медленный. Я застрял, надеюсь, кто-то может помочь мне разобраться.

ответ

3

QTextDocument не является средством визуализации HTML. Он реализует несовместимый HTML- и CSS-lookalike. Например, суффикс px не поддерживается. Все размеры указаны в пикселях (без суффикса) или в процентах (с суффиксом %). Таким образом, вы можете попробовать использовать ширину без суффикса px.

Вы можете полагаться только на документацию о размеченной им надписью QTextDocument, а не на общую документацию HTML/CSS.