2011-03-20 16 views

답변

18

항목의 setCheckState 메소드를 사용하는 체크 상자는 목록 및 테이블 위젯에 필요한 것을 모두 수행해야합니다. 아래의 코드는 당신을 위해 일하는 것이 표시되는 경우

목록 위젯 :

QListWidgetItem *item0 = new QListWidgetItem(tr("First"), listWidget); 
QListWidgetItem *item1 = new QListWidgetItem(tr("Second"), listWidget); 

item0->setCheckState(Qt::Unchecked); 
item1->setCheckState(Qt::Checked); 

표 위젯 : 편집기의 위젯을 다른 유형의

QTableWidgetItem *item2 = new QTableWidgetItem("Item2"); 
item2->setCheckState(Qt::Checked); 
tableWidget->setItem(0, 0, item2); 

당신이 사용할 수있는 대표 (QItemDelegate) 예 : Spin Box Delegate Example.

Spin Box Delegate

나는이 도움이되기를 바랍니다.

+6

와우. 이 의견이 정답으로 선택되었다는 사실에 놀랐습니다. 체크 상태로 QListWidgetItem을 설정하는 것은'테이블이나리스트에 체크 박스를 추가하는 '것이 아닙니다. 또한 델리게이트 생성은 테이블 또는 목록에 위젯을 삽입하는 방법이 아닙니다. 그것은 셀 편집에만 사용됩니다. –

+0

그것이 OP가 원했던 것이기 때문일 수 있습니다. 그리고 그의 질문이 끝나기 때문에이 대답은 그가 어떻게 자신의 위젯을 만들 수 있는지에 대한 방법 중 하나입니다. 게다가 대부분의 경우 컨트롤을 보지 않고 필드를 편집하면 컨트롤이 표시되기를 원합니다. setCellWidget을 통해 셀에 위젯을 제공한다고해서이 위젯이 모델의 일부가 아니기 때문에 위젯의 컨텐츠와 이벤트를 수동으로 처리해야합니다. –

+0

"QList ** Widget ** 및 QTable ** Widget **에 대해 자세히 설명해 주실 수 있습니까? 두 위젯 모두 QAbstractItemView 자손이며 항목 대행자를 설정하는 것을 방해하는 요소는 없습니다. 내 게시물의 스핀 상자 예제는 QTableWidget과 완벽하게 작동합니다. –

41

두 가지 방법이있다. 확인란/라디오 버튼/콤보 상자는 QWidget에서 상속받습니다.

+5

정답으로 선택되지 않았다는 것이 혼란 스럽습니다. 조사하는 데 많은 시간을 소비하지는 않았지만, QTableWidgetItem에 체크 가능한 플래그를 설정하면 체크 박스가 나타나게됩니다. 그래도 setCellWidget()이 작동했습니다. – Scott

+1

체크 여부를 어떻게 확인할 수 있습니까? – Petr

+1

'checkbox.checkState() == 0 or == 2'로 체크해야하고 또 하나는 ckecked, 나는 파이썬으로 excampled했다. 변환해야한다. to-> – PersianGulf

관련 문제