사용자 지정 대리자를 만들 때 createEditor()
, setEditorData()
및 setModelData()
을 구현합니다. 나는 다음과 같은 문제에 직면하고있다. createEditor()
의 모든 예제는 QComboBox 나 QLineEdit 같은 간단한 것들을 사용합니다. 이것은 show()
또는 exec()
멤버 함수가 없으며 QDialog를 사용할 때마다 프로그램에서 정의되지 않은 동작을 보입니다. 그리고 QDialog가 나타납니다. 그러나 미친 짓. 몇 가지 신호/슬롯 마법을 사용하여 프로그램을 만들었지 만 설명 된 표준 패턴을 사용하여 구현하고 싶습니다. 예를 들어 http://cep.xray.aps.anl.gov/software/qt4-x11-4.2.2/model-view-delegate.html 어떻게 할 수 있습니까?커스텀 델리게이트에 QDialog를 고정시키는 방법은 무엇입니까?
정의되지 않은 동작에 직면했을 때 어떤 일이 일어나는지 자세히 설명하려면 createEditor()에서 QDialog의 부모를 설정하면 QDialog가 표시되지 않습니다. 설정하지 않으면 표시됩니다. 그것 주위에 그것을 드래그 (이것은 어쨌든 잘못이며 내가 그렇지 않으면 내가 메모리 누수가 있기 때문에 나는 항상 부모를 설정해야한다고 생각) 사라집니다. 내 질문에, 내 질문에 종기가 : 어떻게하면 QDialog 제대로 표시 할 수 있습니까? 나는 setEditorData(), setModelData() 및 createEditor()의 다른 부분에 show() 및 exec()를 사용하려고 시도했지만 아무 것도 제대로 작동하지 않습니다.
위젯이 아닌 대화 상자가 필요한 이유가 있습니까? – Hayt
@Hayt, 거기에 QTreeView를 표시하고 싶기 때문에 별도의 창이 필요합니다. – Pavel
대화 상자가 아닌 사용자 정의 위젯을 작성하십시오. 당신은 위젯을 당신의 델리게이트에 집어 넣을 수 있습니다. – Hayt