• 7025阅读
  • 8回复

问各位大侠qt中的tableWidget,怎么使某一列不能编辑 [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 楼主  发表于: 2013-01-15
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-01-16) —
如题,qt中的tableWidget,怎么使某一列不能编辑,就是运行后单击此列没有效果,比如是第二列,谢谢
离线justwake

只看该作者 1楼 发表于: 2013-01-15
处理槽的时候对ModelIndex进行处理吧  
应该是这个:
int QModelIndex::column () const

Returns the column this model index refers to.

新手!
离线daily

只看该作者 2楼 发表于: 2013-01-15
我只知道一个一个设。item->setflag(item->flag()|~Qt::ItemIsEditable);
只看该作者 3楼 发表于: 2013-01-15
回 2楼(daily) 的帖子
ui->tableWidget_2->item(11,1)->setFlags(Qt::NoItemFlags);
我这样是不是将第11行第1列那个框设为不可编辑?
结果是编译可以通过的,但是运行时就出错。
离线daily

只看该作者 4楼 发表于: 2013-01-15
不是这样子的。是从当前的flags中移除editable属性。
QTableWidgetItem* pItem = m_pTable->item(nRow, nCol);
pItem->setFlags(pItem->flags() &~ Qt::ItemIsEditable);
    
离线realfan

只看该作者 5楼 发表于: 2013-01-15
QTableWidgetItem * pItem = new QTableWidgetItem("....");
pItem->setFlags(Qt::ItemIsUserCheckable);
只看该作者 6楼 发表于: 2013-01-15
回 4楼(daily) 的帖子
谢谢,能不能再写的详细点,呵呵。完全新手
比如是ui中的tableWidget_2的第11行第1列,不能编辑
离线daily

只看该作者 7楼 发表于: 2013-01-16

int nRowCount = ui.tableWidget_2->rowCount();
for(int nIdx = 0 ; nIdx < nRowCount ; ++nIdx)
{
   QTableWidgetItem * item =  ui.tableWidget_2->item(nIdx, 1);//处理第nIdx行1列
     pItem->setFlags(pItem->flags() &~ Qt::ItemIsEditable);

}

QTableWidgetItem* pItem = ui.tableWidget_2->item(11, 1);//处理第11行1列
if(NULL != pItem)
{
     pItem->setFlags(pItem->flags() &~ Qt::ItemIsEditable);
}
只看该作者 8楼 发表于: 2013-01-16
回 7楼(daily) 的帖子
谢谢
快速回复
限100 字节
 
上一个 下一个