如何在QTableWidget的行和列中自动换行文本?

时间:2012-03-03 06:39:30

标签: qt 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);

还尝试resizeColumnsToContentsresizeRowsToContents,但失败了。

如果文字长于设定的宽度,我希望句子分解 当然,句子的冗长部分没有显示出来。

3 个答案:

答案 0 :(得分:5)

setWordWrap定义文本的行为,而不改变列大小。如果您需要保持列宽固定,请在项目插入单元格后调用resizeRowsToContents (我假设您要通过QTableWidgetItem向表格添加文字)。

请注意,如果项目中包含的任何字词比列大小宽,则会从该点开始省略文本(默认情况下,您会看到省略号: ... )。如果要更改此类行为,则需要重新实现项目的绘制功能或拉伸列。

答案 1 :(得分:3)

每次调整列时,这会自动调整自动换行:

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

答案 2 :(得分:0)

正如问题评论中所提到的,明确将行大小设置为某个值似乎有效:

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

我注意到,对于我的代码,我不必显式调用setWordWrap以使单元格内容被自动换行。