且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

QTableWidget - 将多行文本放在一行

更新时间:2023-12-04 13:27:22

强制tablewidget呈现多行文本:

I can think about 2 ways to force tablewidget to render multi-line text:


  1. 设置 QStyledItemDelegate 项委托并在代理绘制方法中自己渲染文本。 在这里,您可以找到您的示例

  1. 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);
}

希望这有助于您,