2012-03-03 3 views
3

Я пробовал:Как записать текст в строки и столбцы QTableWidget?

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, но потерпел неудачу.

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

+0

Вы пробовали задавать высоту строки явно? Если это не сработает, возможно, вам придется реализовать подкласс QStyledItemDelegate, чтобы иметь возможность изменять sizeHint(). Хотите ли вы редактировать содержимое ячейки? – kossmoboleat

ответ

4

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

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

2

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

connect(
    tableWidget->horizontalHeader(), 
    SIGNAL(sectionResized(int, int, int)), 
    tableWidget, 
    SLOT(resizeRowsToContents())); 
0

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

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

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

+0

В документации указано, что по умолчанию 'wordWrap' является' true'. Так что да, вы не должны его называть. Тем не менее, я не вижу ничего обертывания. Это может быть отклонено, если ширина столбца слишком мала, но я хотел бы обертывать, как в высоту ячейки, и текст, появляющийся на любом количестве строк по мере необходимости ... Возможно ли это? –

Смежные вопросы