في GTK، كيف يمكنني البحث في ListStore للصف الذي يحتوي على قيمة معينة؟
-
19-09-2019 - |
سؤال
انا املك ListStore
نمذجة قائمة Tag
س. قد تتغير هذه القائمة من ListStore
. وبعد ما أود القيام به هو الاستماع إلى TagRemoved
الحدث في بلدي TagList
فئة، وإزالة Tag
من ListStore
عندما يتم تشغيل الحدث. ومع ذلك، لا أستطيع أن أجد طريقة للبحث ListStore
للصف الذي يحتوي على معطى Tag
, ، حتى أتمكن من إزالته.
هل هناك أي طريقة للقيام بذلك؟
المحلول
أ GtkListStore
تنفذ GtkTreeModel
واجهة، التي تحتوي على عمليات اجتياز الشجرة التي تريدها. بقدر ما أعرف، لا يوجد API الراحة للبحث عن متجر قائمة / شجرة، لذلك عليك أن تتصل بك.
منذ أنك ببساطة تكرار أكثر من GtkListStore
, ، يمكنك تجاهل جميع واجهة برمجة التطبيقات التي تتناول العلاقات بين الأطفال / الوالدين، واستخدامها ببساطة gtk_tree_model_iter_first()
و gtk_tree_model_iter_next()
لاجتياز القائمة.
بدلا من ذلك، إذا كنت تعرف بالفعل مؤشر العلامة التي تمت إزالتها في المتجر (على سبيل المثال، من TagRemoved
الحدث)، يمكنك تحويل ذلك إلى GtkTreePath
واستخدام gtk_tree_model_get_iter()
لاسترداد الصف في السؤال مباشرة دون البحث.
نصائح أخرى
يتم تنفيذ GTKListStore داخليا ك قائمة مرتبطة لذلك يجب عليك مسح النموذج بنفسك.