【发布时间】:2011-03-19 00:03:39
【问题描述】:
QTableWidget的一行可以放多行文字吗?
【问题讨论】:
QTableWidget的一行可以放多行文字吗?
【问题讨论】:
我可以考虑两种强制tablewidget渲染多行文本的方法:
设置 QStyledItemDelegate 项目委托并在委托绘制方法中自己呈现文本。 Here 你可以找到一个例子,你可以对列表视图做同样的事情。
另一种解决方案是通过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);
}
希望这会有所帮助,问候
【讨论】:
您也可以简单地使用 \n 在单元格中开始新行:-)
例如:
ui->tableWidget->insertRow(i);
QTableWidgetItem *newItem = new QTableWidgetItem("Line 1 \n Line 2");
ui->tableWidget->setItem(0,0,newItem);
【讨论】:
只需制作垂直标题以适应内容,然后根据需要使用文本。
QTableWidget::verticalHeader()->resizeSections(QHeaderView::ResizeToContents);
【讨论】: