Hali,
Szeretnem, ha a parent checkstate ki/be kapcsolasa tovabb menne a child item-ekre is. Mivel lehetne ezt beallitani?
A masik kerdes az volna, hogy a checkstate box-ot be lehet-e kapcsolni globalisan a designer-ben, mert nekem csak item-enkent megy (bar ez kevesbbe fontos, mert ugy sem a designer-rel lesznek betoltve az item-ek).
Koszi,
/sza2
PS: es letezik ilyen:
A setFlags-szel a QtCore.Qt.ItemIsTristate-et beallitva pont az a mukodes amit elvar az ember.
- 4273 megtekintés
Hozzászólások
Valaki?
/sza2
- A hozzászóláshoz be kell jelentkezni
Tipp:
implementálsz egy slotot, amelyet a "parent" objektumod stateChanged(int state) signáljához kötsz. A slotban aztán végigmész a parent gyerekein: ezt a children() függvénnyel tudod leérni*, ami QObjectListet ad vissza. Végigmész a kapott listán**, és beállítod a checkstate-eket a signál által kibocsátott state állapotra.
* opcionálisan a sender() függvény a slotban visszaadja azt a parentet, ami küldte a signalt. Vigyázz, ezt dynamic_castolni kell QCheckBoxra, illetve ellenőrizni kell, nem 0-e.
** Amikor végigiterálod a QObjectListet, érdemes lehet ellenőrizni, hogy az adott QObject az QCheckBox-e, ez pl lehetséges a qobject_cast<QCheckBox*>(obj) függvénnyel.
Nem próbáltam most ezeket ki, de hátha segít
- A hozzászóláshoz be kell jelentkezni
Igen, en is ezt a megoldast lattam legtobb helyen, arra gondoltam, akad valami olyan "tulajdonsag" a QTreeWidget-hez, amivel ez automatikus. Egy meglevo wx-es feluletet barkacsolok at Qt-re es a wx-ben volt ilyen lehetoseg (marmint, a tree-nek volt egy bekapcsolhato tulajdonsaga, hogy osszerendelje-e a szulo/gyerek checkbox-okat).
*, ** BTW, Python-ban irom, de valahogy majd rajovok (vagy google rajon:-)
Koszi,
/sza2
- A hozzászóláshoz be kell jelentkezni
Bár nem írtad a konkrét példát, gyakori igény az, hogy ha egy "parent" QCheckBox mellől ki van szedve a pipa, akkor az alatta lévők is kikapcsolódjanak. Erre esetleg alkalmas lehet egy QGroupBox, amely checkable.
- A hozzászóláshoz be kell jelentkezni
A QGroupBox alkalmazhato QTreeWidget-nel?
/sza2
- A hozzászóláshoz be kell jelentkezni
Uh, elnézést, a topic címén kívül mindent elolvastam. Azt hittem, egyszerű checkboxokról van szó, amelyeknek a parentje nem szemantikai parent, hanem a QObject-hierarchia szerinti parent.
MyBad, akkor természetesen teljesen másról van szó.
collapseAll() kéne neked, de csak egy-egy subnode-ra, ha jól értem. Hát igen, az API-ban erre nem látok gyors megoldást.
- A hozzászóláshoz be kell jelentkezni
Azert koszi.
Mondjuk szerintem ez van annyira surun hasznalt dolog, hogy lehetne egy flag-gel kapcsolhato...
/sza2
- A hozzászóláshoz be kell jelentkezni
Igen, csodálkozom is, hogy nincs erre megoldás. Subclasseld! De okosan kéne, először a fő elemet elrejteni, aztán a már nem látszó elemeken rekurzívan végigmenni, setExpanded()-del. Bár konkrétan még nem csináltam ilyent, de gyanítom így lenen hatékony: biztosan csak egy redraw kell.
- A hozzászóláshoz be kell jelentkezni
De van :-)
MyTreeWidgetItem.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsDragEnabled | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsTristate)
Nem egyszeru rajonni, ha nem tudja az ember, mit is keres valojaban...
/sza2
- A hozzászóláshoz be kell jelentkezni
Oh, ma is tanultunk valamit :)
- A hozzászóláshoz be kell jelentkezni