我试过了:
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 :(得分: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
以使单元格内容被自动换行。