6

我试过:

    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);

也试过resizeColumnsToContentsand resizeRowsToContents,但失败了。

如果文本比设置的宽度长,我希望句子分解。
目前,句子的冗长部分没有显示出来。

4

3 回答 3

8

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

请注意,如果项目中包含的任何单词大于列大小,则从该点开始将省略文本(默认情况下,您将看到省略号:...)。如果你想改变这种行为,你需要重新实现项目的绘画功能或拉伸你的列。

于 2012-03-03T15:43:12.213 回答
6

这将在每次调整列大小时自动调整自动换行:

connect(
    tableWidget->horizontalHeader(),
    SIGNAL(sectionResized(int, int, int)),
    tableWidget,
    SLOT(resizeRowsToContents()));
于 2013-07-09T12:56:33.020 回答
0

如问题评论中所述,将行大小显式设置为某个值似乎可行:

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

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

于 2014-11-29T16:20:34.383 回答