更新时间:2023-12-04 13:27:22
强制tablewidget呈现多行文本:
I can think about 2 ways to force tablewidget to render multi-line text:
设置 QStyledItemDelegate 项委托并在代理绘制方法中自己渲染文本。 在这里,您可以找到您的示例
Setup QStyledItemDelegate item delegate and render text yourself in the delegates paint method. Here you can find an example of you could do the same thing to a listview.
另一个解决方案是通过 setCellWidget 方法。
Another solution would be to set QTextEdit as a cell widget to the table widget via setCellWidget method.
以下是#2的示例:
QTableWidget* tableWidget = new QTableWidget(3, 2, this);
tableWidget->setGeometry(20, 20, 300, 300);
for (int row = 0; row<3; row++)
{
for (int column=0; column<2; column++)
{
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1 long long long long long long text").arg((row+1)*(column+1)));
tableWidget->setItem(row, column, newItem);
}
QTextEdit *edit = new QTextEdit();
edit->setText(tableWidget->item(row, 0)->text());
tableWidget->setCellWidget(row, 0, edit);
}
希望这有助于您,