Как перенести текст в строки и столбцы QTableWidget? - PullRequest
4 голосов
/ 03 марта 2012

Я пытался:

    QTableWidget *j = new QTableWidget (10000, 5, centralWidget);
    j->setColumnWidth (0, 500);
    j->setColumnWidth (1, 30);
    j->setColumnWidth (2, 30);
    j->setColumnWidth (3, 320);
    j->setColumnWidth (4, 310);

    j->setWordWrap (true);

Также пробовал resizeColumnsToContents и resizeRowsToContents, но не удалось.

Если текст длиннее заданной ширины, я хочу, чтобы предложение было разбито.
В настоящее время длинная часть предложения просто не отображается.

Ответы [ 3 ]

5 голосов
/ 03 марта 2012

setWordWrap определяет поведение текста без изменения размера столбца. Если вам необходимо сохранить фиксированную ширину столбца, вызовите resizeRowsToContents после вставки элемента в ячейку (я полагаю, вы добавляете текст в таблицу с помощью QTableWidgetItem).

Обратите внимание, что если какое-либо из слов, содержащихся в элементе, шире, чем размер столбца, текст будет удален с этого момента (по умолчанию вы увидите эллипсы: ... ). Если вы хотите изменить такое поведение, вам нужно переопределить функцию рисования элемента или растянуть столбцы.

3 голосов
/ 09 июля 2013

Это будет корректировать перенос слов при каждом изменении размера столбца:

connect(
    tableWidget->horizontalHeader(),
    SIGNAL(sectionResized(int, int, int)),
    tableWidget,
    SLOT(resizeRowsToContents()));
0 голосов
/ 29 ноября 2014

Как упомянуто в комментарии к вопросу, кажется, что установка размера строки в явном виде для некоторого значения работает:

 tableWidget->resizeRowsToContents();
 tableWidget->verticalHeader()->setDefaultSectionSize(50);

Замечу, что для моего кода мне не нужно было явно вызывать setWordWrap для того, чтобы содержимое ячейки было перенесено на слово.

...