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

时间:2011-03-19 00:03:39

标签: c++ qt

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

3 个答案:

答案 0 :(得分:5)

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

例如:

    ui->tableWidget->insertRow(i);

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

答案 1 :(得分:2)

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

  1. 设置QStyledItemDelegate项委托并在委托paint方法中自行呈现文本。 Here你可以找到一个例子,你可以对列表视图做同样的事情。

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

  3. 以下是#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);
    }
    

    希望这有帮助,尊重

答案 2 :(得分:2)

只需制作垂直标题以适合内容,然后根据需要使用文字。

QTableWidget::verticalHeader()->resizeSections(QHeaderView::ResizeToContents);