首先,如果要将数据显示为二维数组,则应编写另一个循环。例如这个:
int counter = 0;
QStandardItemModel *model = new QStandardItemModel(this);
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
{
counter++;
QStandardItem *item = new QStandardItem(QString::number(counter));
model->setItem(i,j,item);
}
ui->tableView->setModel(model);
在我的电脑上,这完全符合您的要求。
第二。用户可以对单元格执行不同的操作。QTableView 有几个非常好的信号。有了这个信号,我们就可以与细胞进行交流。我再写一个代码片段。
int counter = 0;
QStandardItemModel *model = new QStandardItemModel(this);
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 3; ++j)
{
counter++;
QStandardItem *item = new QStandardItem(QString::number(counter));
model->setItem(i,j,item);
}
connect(ui->tableView,SIGNAL(clicked(QModelIndex)),this,SLOT(clickedIndex(QModelIndex )));
ui->tableView->setModel(model);
//...
void MainWindow::clickedIndex(QModelIndex index)
{
if(index.isValid())
{
ui->tableView->model()->setData(index,QString("you press %1 , %2 cell").arg(index.row()).arg(index.column()));
}
}
在此示例中,当用户单击某个单元格时,单元格中的文本会告诉他该单元格的编号。我希望,它有帮助。