Saya memiliki QTreeWidget dengan bentuk berikut:

Root
- Item1
-- Sub11
--- Sub111
-- Sub12
--- Sub121
...

Saat mengklik dua kali pada item apa pun dari QTreeWidget, pilihan akan diperluas secara default (atau diciutkan jika sudah diperluas). Saya membuat fungsi sederhana tree_get_details(self, item, column) untuk mencetak item dan kolom dari item yang diklik ganda dan menghubungkannya dengan itemDoubleClicked. Ini bekerja dengan baik sejauh ini. Namun bagaimana saya bisa membuat fungsi ini hanya tersedia di lapisan bawah pohon (yaitu untuk baris subXXX). Oleh karena itu untuk Root, Item1, Item2, Sub11, Sub12 hanya perilaku default untuk acara yang diklik dua kali dan untuk Sub111, Sub121 mencetak item dan kolom?

Entah bagaimana saya perlu menguji fungsi saya tree_get_details jika "item" yang diteruskan dalam argumen ada di lapisan bawah. Saya tahu metode topLevelItem tetapi tidak dapat menemukan yang paling bawah yang sesuai (jika ada ...). Pohon saya memiliki hierarki 4 tingkat.

0
Hotone 10 Maret 2020, 13:14

1 menjawab

Jawaban Terbaik

Itu tergantung pada apa sebenarnya yang Anda maksud dengan "item bawah". Nama biasa untuk "item bawah" di pohon adalah "item daun". Ini didefinisikan sebagai item tanpa anak-anak. Itu adalah sesuatu yang dapat Anda periksa dengan metode QTreeWidgetItem::childCount ( itu daun jika dan hanya jika mengembalikan 0).

Jika karena alasan apa pun, Anda ingin mendeteksi item di sub-level ketiga, Anda dapat menghitung jumlah item induk secara rekursif. Itu sedikit lebih rumit dan mungkin bukan yang Anda inginkan.

1
pasbi 10 Maret 2020, 10:45