2013-09-27 58 views
1

每一个身体如何填充QTableWidget的可编辑的项目,并没有可编辑项目

我有一排排坐在她的休息与编辑的项目第一行填充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; 
} 
+0

你的问题是什么? – Aleksandar

+0

我想让我的表像MS访问表一样,这意味着用户有能力编辑线条到线条的无穷远线,所以用户不能传递到线条两上, 。我希望你现在清楚 – advseo32

+0

和你的代码有什么行为?该表是否已填充?首先要做的事情是:如果你需要行零和一个可编辑的话,这就是你的'if'需要如何'if(row == 1 || row == 0)';第二件事:当前一次编辑完成时,需要一些机制来启用下一行的项目。 – Aleksandar

回答

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

我希望这会有所帮助。

+1

太棒了,我已经想通了,非常感谢 – advseo32