Всем привет! Хочу сделать таблицу как на прикрепленной картинке:
Использую для этого QT классы: QTextCursor, QTextDocument, QTextTable
Так вот у меня проблема с объединением ячеек как на картинке. Щас мой код рисует все без объединений, как в 5 6 7 столбцах. Как понял у QTextTable есть метод splitCell(), но пока не понял, как его лучше впихнуть в мою реализацию, чтобы достич нужного результата. Видимо придется добавлять в функцию addTableText аргумент со списком строк которые нужно объединять при определенном условии? Код функций прикрепил ниже:
Функция добавления таблицы и заполнение заголовков таблицы:
placeTable(QList<QString> headers)
{
int lines = 1;
cursor.movePosition(QTextCursor::End);
cursor.insertTable(lines, headers.count(), tableHeaderStyle.tableStyle);
freeTableLines = lines;
for (int i=0; i<headers.size(); i++)
{
cursor.setBlockFormat(tableHeaderStyle.parStyle);
cursor.insertText(headers[i], tableHeaderStyle.textStyle);
cursor.movePosition(QTextCursor::NextCell);
}
freeTableLines--;
}
Функция добавления текста в колонки таблицы:
addTableText(QList<QString> content, RWStyles cstyle)
{
RWStyle currentStyle;
switch ( cstyle )
{
case rw_pageheader: cstyle = rw_tableheader;
case rw_standard: cstyle = rw_tabletext;
case rw_tabletext:
{ currentStyle = tableTextStyle; }
break;
case rw_tableheader:
{ currentStyle = tableHeaderStyle; }
break;
case rw_redtabletext:
{ currentStyle = redTableTextStyle; }
break;
default:
break;
}
QTextTable *table = m_cursor.currentTable();
if ((! table))
{
freeTableLines=1;
m_cursor.insertTable(freeTableLines, content.count(), currentStyle.tableStyle);
}
if (freeTableLines==0)
{
table->appendRows(1);
m_cursor.movePosition(QTextCursor::PreviousRow);
m_cursor.movePosition(QTextCursor::NextRow);
freeTableLines++;
}
for (int i=0; i<content.size(); i++)
{
m_cursor.setBlockFormat(currentStyle.parStyle);
m_cursor.insertText(content[i], currentStyle.textStyle);
m_cursor.movePosition(QTextCursor::NextCell);
}
freeTableLines--;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Надо считать бесконечный ряд переменных типа double с консолиНапример, я ввожу:
Подскажите, зачем в приведенном примере инициализируется локальный массив char temp[80] ? Массив не используется, но и объяснений нет никаких,...
Ситуация такая: Насколько я понял функция ниже возвращает cv::Mat по HWND окна, если брать HWND desktop или не менять размер исследуемого окна, то все...
Указанное в заголовке предупреждение выдается на вот этой строке: