QT设置表格控件单行可写

来源:互联网 发布:adobe cs6是什么软件 编辑:程序博客网 时间:2024/05/13 09:36

1.设置表格控件只读:

ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);

2.设置表格单元格条目只读:

QTableWidgetItem *item = ui->tableWidget->item(row,0);item->setFlags(Qt::NoItemFlags);

3.设置表格控件可写

ui->tableWidget->setEditTriggers(QAbstractItemView::CurrentChanged);

4.但是我用
item->setFlags(Qt::ItemIsEditable)
设置单元格条目可写就失败了

5.经过一番斗争得到如下设置表格控件单行可写的函数:
大概思路:先将整个控件设为可写,再将特定行之外的行数设置为不可写

void setWriteability(int row, bool bl)//row为想要设置可写性的表格行数下标,bl为设置为可写还是只读,true为单行可写,false为整张表只读{    if(bl)    {        ui->tableWidget->setEditTriggers(QAbstractItemView::CurrentChanged);//所有可写        //非选中行均设置为不可写        QTableWidgetItem *item;//存放每一个单元格条目        int i = 0;        for(; i < row; i++)//先将指定行之前的行数设为只读        {            for(int j=0; j<7; j++)            {                item = ui->tableWidget->item(i,j);                item->setFlags(Qt::NoItemFlags);            }        }        i++;//跳过指定的可写行        for(; i >row && i < ui->tableWidget->rowCount(); i++)//再将指定行之后的行数设为只读        {            for(int j=0; j<7; j++)            {                item = ui->tableWidget->item(i,j);                item->setFlags(Qt::NoItemFlags);            }        }    }else{        ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//只读    }}

记录一下,如果各位大神有更好的方法,恳请留言,先谢过~~~

1 0
原创粉丝点击