qtablewidget - 如何使用可编辑项目和不可编辑项目填充 Qtablewidget

标签 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;
}

最佳答案

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

ui->tableWidget->setRowCount(numberOfRows)

ui->tableWidget->setColumnCount(numberOfColumnss)

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

ui->tableWidget->setRowCount(2);

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

    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);
    }

我希望这会有所帮助。

关于qtablewidget - 如何使用可编辑项目和不可编辑项目填充 Qtablewidget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19046180/

相关文章:

python - 单击时发出 QTableWidgetItem 特定信号

c++ - QStyledItemDelegate:区分 closeEditor() 或 setModelData() 的原因

qt - 如何在不更改条目索引的情况下隐藏 QTableWidget 的一行?

python - 在 QTableWidget 中的列标题下添加边框

c# - 如何迭代具有标志的枚举值?

c++ - 检测单击并获取 QTableWidget 标题的文本,如何?

c# - 从逗号分隔的列表或整数中解析枚举标志

c# - 用两个相等的值序列化标志枚举

c++ - 调整 QTableWidget 列和行的大小以填充表格

c++ - Qt 添加表格小部件项目时出现问题