Qt Объединение ячеек в таблице

433
28 июля 2017, 02:32

Всем привет! Хочу сделать таблицу как на прикрепленной картинке:

Использую для этого 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--;
}
READ ALSO
Бесконечный ввод чисел в консоли

Бесконечный ввод чисел в консоли

Надо считать бесконечный ряд переменных типа double с консолиНапример, я ввожу:

272
Объясните зачем нужен массив temp в примере!

Объясните зачем нужен массив temp в примере!

Подскажите, зачем в приведенном примере инициализируется локальный массив char temp[80] ? Массив не используется, но и объяснений нет никаких,...

277
OpenCV Error: Bad argument (The total number of matrix elements is not divisible by the new number of rows) in reshape

OpenCV Error: Bad argument (The total number of matrix elements is not divisible by the new number of rows) in reshape

Ситуация такая: Насколько я понял функция ниже возвращает cv::Mat по HWND окна, если брать HWND desktop или не менять размер исследуемого окна, то все...

382
Checks that jquery selectors are used in an efficient way

Checks that jquery selectors are used in an efficient way

Указанное в заголовке предупреждение выдается на вот этой строке:

315