初识QTableWidget

来源:互联网 发布:学会了单片机再学plc 编辑:程序博客网 时间:2024/06/10 03:06
QT帮助文档关于QTableWidget的说明如下:

The QTableWidget class provides an item-based table view with a default model.
Table widgets provide standard table display facilities for applications. The items in a QTableWidget are provided by QTableWidgetItem.
If you want a table that uses your own data model you should use QTableView rather than this class.

翻译过来就是:“ QtableWidget 提供了基于 Item 的可视化表格。表格控件为应用程序提供了标准的表格显示能力。QTableWidget 中的Items由 QTableWidgetItem 来提供。如果想使用自己的数据模式,请使用 QTableView 而不是 QTableWidget 。”(注:QtableWidget是继承于QtableView的。

对于“QTableWidget 中的 Items 由 QTableWidgetItem 来提供”这句话,这里给出更详细的说明。

QTableWidget 在结构上有横向和列向两个表头构成,内部是单元格,单元格内部可由 Item 或 Widget 填充:




可以使用 void QTableWidget::setVerticalHeaderLabels(const QStringList & labels) 或 void QTableWidget::setHorizontalHeaderLabels(const QStringList & labels) 来设置表头,示例如下:

QStringList header;
header<<"C1"<<"C2";
TableWidget->setHorizontalHeaderLabels(header);

单元格中的 Item 或 Widget,在使用后一定要释放,否则会大量占用内存。下面介绍向单元格添加/删除 Item 或 Widget 的方法。

使用 void QTableWidget::setCellWidget(int row, int column, QWidget * widget) 可以向指定单元格中添加(row 和 column 是单元格的行列坐标,以下不再赘述) Widget,如:

setCellWidget(index, new QLineEdit);

使用 void QTableWidget::removeCellWidget(int row, int column) 可以删除指定单元格内的 Widget。

使用 void QTableWidget::setItem(int row, int column, QTableWidgetItem * item) 可以向指定单元格中添加 Item,如:

ui->TableWidget->setItem(row,column , new QTableWidgetItem(String));

使用 QTableWidgetItem * QTableWidget::item(int row, int column) const 获得指定单元格内的 Item 指针,如果该单元格中没有 Item 则返回数字“0”。

使用 delete 删除 Item,如:

delete ui->TableWidget->item(row, column);

如果 QTableWidget 的某个单元格中的内容为空,则有两种可能情况:1.该单元格中没有 Item 或 Widget;2.该单元格中的 Item 或 Widget 的内容为空。

因此,如果要判断某个单元格内容是否为空,应先判断是否有 Item,示例代码如下:

if(0!=ui-TableWidget->item(row,column))
{
if(ui->TableWidget->item(row,column)->text().isEmpty())
{
...
}
}
else
{
...
}
0 0
原创粉丝点击