【问题标题】:How to populate Qtablewidget with editable item and none editable item如何使用可编辑项和不可编辑项填充 Qtablewidget
【发布时间】:2013-09-27 08:27:58
【问题描述】:

每个人

我在用第一行的可编辑项目填充 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;
}

【问题讨论】:

  • 你有什么问题?
  • 我想让我的表像 MS 访问表,这意味着用户有能力从一行到行无限编辑行,所以用户不能传递到第二行,与填充行零和一。我希望你现在清楚
  • 你的代码有什么行为?表格是否已填充?要做的第一件事:如果您需要零行和一个可编辑的行,这就是您的 if 需要为 if(row == 1 || row==0) 的方式;第二件事:您需要一些机制来在上一行完成编辑时启用下一行的项目。

标签: qtablewidget enum-flags qtablewidgetitem


【解决方案1】:

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

ui-&gt;tableWidget-&gt;setRowCount(numberOfRows)

ui-&gt;tableWidget-&gt;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);
    }

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-06-06
    • 2022-09-28
    • 2020-04-10
    相关资源
    最近更新 更多