c++ - 如何填充 QTableWidget?
问题描述
我有一些代码,我尝试在其中填充 QTableWidget。但是当我运行这个应用程序时,销售是空的。我检查了是否包含 QTableWidget 任何元素(项目),它包含。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTableWidget>
#include <QDebug>
#include <QTimer>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QTableWidget *pWidget = new QTableWidget( 5, 6 );
for( int row = 0; row < 5; row++ )
{
for( int column = 0; column < 6; column++ )
{
QString sItem = QString::number( row + column );
QVariant oVariant(sItem);
QTableWidgetItem oItem;
oItem.setData( Qt::DisplayRole, oVariant );
pWidget->setItem( row, column, &oItem );
QVariant oData = pWidget->item( row, column )->data( Qt::DisplayRole );
qDebug() << "OData: " << oData.toString();
}
}
QTimer::singleShot( 0, pWidget, SLOT( show() ) );
}
解决方案
您需要分配QTableWidgetItem
工作示例:
QTableWidget *pWidget = new QTableWidget( 5, 6 );
for( int row = 0; row < 5; row++ )
{
for( int column = 0; column < 6; column++ )
{
QString sItem = QString::number( row + column );
QVariant oVariant(sItem);
// allocate the widget item
QTableWidgetItem * poItem = new QTableWidgetItem();
poItem->setData( Qt::DisplayRole, oVariant );
pWidget->setItem( row, column, poItem );
}
}
推荐阅读
- neural-network - 深度学习中的基础网络和检测网络有什么区别?
- reactjs - 如何重置父组件onclick反应
- c++ - 为什么 `abs()` 的实现方式不同?
- oracle - 查询之间的条件
- python - 迭代解包函数输出 - 错误:要解包的值太多
- c - 'scanf' 后值发生变化
- python - 有没有办法使用 Twitter API 创建和销毁静音词
- cucumber - 我无法成功运行黄瓜报告
- docker - Network usage data between every two pairs of docker containers
- excel - 有条件地粘贴值,利用相邻单元格