如何使用可编辑项目和无可编辑项目填充Qtablewidget

时间:2013-09-27 08:27:58

标签: qtablewidget enum-flags qtablewidgetitem

每个人

我在使用第一行的可编辑项填充Qtablewidget时遇到问题,然后

其他行的不可编辑项目到目前为止是我的实现

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTableWidgetItem>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);




    QTableWidgetItem *item= NULL;
    for(int row=0; row < ui->tableWidget->rowCount(); row++)
    {
        for (int col=0; col< ui->tableWidget->columnCount(); col++)
        {
            if(row == 1)
            {
                item = new QTableWidgetItem;
                item->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled);
                ui->tableWidget->setItem(row,col,item);

            }else{

                item = new QTableWidgetItem;
                item->setFlags(Qt::NoItemFlags);
                ui->tableWidget->setItem(row,col,item);

            }
        }
    }




}

MainWindow::~MainWindow()
{
    delete ui;
}

1 个答案:

答案 0 :(得分:1)

此外,您需要在填充tableWidget之前设置行数和列数:

ui->tableWidget->setRowCount(numberOfRows)

ui->tableWidget->setColumnCount(numberOfColumnss)

由于您不知道需要多少行(因为您希望用户能够从一行到另一行编辑行),我会这样做:

ui->tableWidget->setRowCount(2);

...只添加2行(“第0行和第1行”),因此用户只能看到必须填写的两行。您将需要机制来检查是否所有单元格都已填满(例如:每次单元格项目更改时,如果填充所有其他项目,则检查它们 - 不是空的)所以只有当它们存在时,用户才能传递给编辑新行,您将动​​态地为每个下一行添加到表中,如下所示:

    rowNumber = ui->tableWidget->rowCount();
    ui->tableWidget->insertRow(rowNumber);
    for (int col=0; col< ui->tableWidget->columnCount(); col++){
        item = new QTableWidgetItem;
        item->setFlags(Qt::ItemIsEditable | Qt::ItemIsEnabled);
        ui->tableWidget->setItem(rowNumber ,col,item);
    }

我希望这会有所帮助。