2016-08-23 56 views
0

尋找一種最佳的方式來讓整個表格只能通過留下少量可編輯的單元格來讀取。是否有任何優化的方法可以在Qtablewidget中編輯特定的單元格,使其離開剩餘的單元格只讀

我試過的是給除了需要編輯的單個單元格分配不可編輯的標誌。

ui.budget_tab7->item(3,3)->setFlags(ui.budget_tab7->item(3,3)->flags() & Qt::ItemIsEditable | Qt::ItemIsSelectable); 

那麼這不是最好的方式來做到這一點。

是否有可能做這樣的

ui.budget_tab7->setEditTriggers(QAbstractItemView::NoEditTriggers); 

,然後應用某種對少數細胞的方法,以使細胞可編輯首先要對整個表不可編輯?

+0

很難判斷它是否是最好的方法,但是您可以實現自己的'QAbstractItemModel',實現'flags'方法並返回每個applicalbe單元的可編輯對象。編輯觸發器是一個不同的概念,然後可編輯,不能混合。 – maxik

回答

0

這真的取決於你想在這裏實現什麼。一種選擇是在表格中使用QStandardModel。這樣你就可以餵食QStandardItems,這很容易配置(請檢查這個班級的所有設置者,看看它的真正威力)。

QTableWidget* view = new QTableWidget; 
QStandardItemModel* model = new QStandardItemModel; 
view->setModel(model); 
... 
QStandardItem* new_item = new QStanrdItem("A"); 
new_item->setEditable(false); 

model->setItem(0,0,new_item); 

但是,它確實取決於你的表正在顯示什麼,以及你希望如何存儲/訪問你的數據。實現自己的QAbstractItemModel通常是獲得所需功能的最佳方式。

相關問題