QTableWidget - 将多行文本放在一行中

6 c++ qt

是否可以在QTableWidget的一行中放置多行文本?

ser*_*nko 6

我可以考虑两种强制 tablewidget 渲染多行文本的方法:

  1. 设置QStyledItemDelegate项目委托并在委托绘制方法中自行渲染文本。在这里您可以找到一个可以对列表视图执行相同操作的示例。

  2. 另一个解决方案是通过setCellWidget方法将 QTextEdit 设置为表格小部件的单元格小部件。

下面是 #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);
}
Run Code Online (Sandbox Code Playgroud)

希望这有帮助,问候


Seb*_*sza 5

您也可以简单地使用\n在单元格中开始新行:-)

例如:

    ui->tableWidget->insertRow(i);

    QTableWidgetItem *newItem = new QTableWidgetItem("Line 1 \n Line 2");
    ui->tableWidget->setItem(0,0,newItem);
Run Code Online (Sandbox Code Playgroud)

  • 您可能希望之后调用ui-> tableWidget-> resizeRowToContents(i),以确保tablewidget显示行的正确高度 (5认同)