2016-08-23 6 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

가장 좋은 방법인지 알기는 어렵지 만,'flags' 메소드를 구현하여 자신의'QAbstractItemModel'을 구현하고 모든 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을 구현하면 원하는 기능을 얻을 수있는 최상의 방법입니다.