سؤال

هل هناك طريقة في Gtk+ كومة القطعة واحدة على رأس آخر -- لا عد GtkFixed?GtkFixed لا يعمل بشكل جيد لسببين:1) أريد الترتيب Z و 2) أنا بحاجة القطعة واحدة تمتد وملء توفير مساحة.

هل كانت مفيدة؟

المحلول

وأنا لا أعتقد أن هناك حاوية سليمة في GTK القياسية. وأود أن فئة فرعية جتك :: ثابت ... ما زال أقرب واحدة يمكنك الحصول عليها، وإذا كنت تستخدم gtkmm ثم إن شاء subclasses ترث لا ينبغي أن يكون difficult¹ جدا. ثم يمكنك التحكم في أبعاد كل الحاجيات، وتمتد الطفل اختيار واحد لملء الفضاء.

لسيطرة Z-محور وربما كنت بحاجة إلى التلاعب X النوافذ القطعة ل- تحقق من وثائق GDK على موضوع GDK windows². وأذكر أنه في جتك كل القطعة ديها ممتلكات gtk.Widget.window، أعتقد أن الشيء نفسه عن gtkmm. وهذا يفترض أن جميع الحاجيات طفلك على نوافذ X، لذلك f.e. ستحتاج إلى التفاف جتك :: تسمية داخل جتك :: EventBox.

HTTP: // شبكة الاتصالات العالمية. gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/chapter-customwidgets.html

HTTP: // شبكة الاتصالات العالمية. gtkmm.org/docs/gtkmm-2.4/docs/reference/html/classGdk_1_1Window.html#6eef65b862344ad01b01e527f2c39741

نصائح أخرى

لقد كانت هذه المسألة على وجه الدقة باستخدام Gtk::ثابت (في الواقع gtk.ثابت -- pygtk -- ولكن اعتقد انها كل نفس تحت) و كنت قادرة على التعامل معها بسهولة تامة من خلال التلاعب في كل القطعة نافذة.

في حالتي, الحاجيات بالفعل EventBox الحالات ، أنا فقط بحاجة إلى التأكد من أن كنت تجره كان على رأس, لأن خلاف ذلك انزلق تحت الآخرين ، التي تبدو خاطئة تماما.كان الحل بسيط كما يدعو "القطعة.نافذة.raise_()" لرفع القطعة الأساسية الأخرى النافذة عندما القطعة تم النقر البدء في السحب.

لذلك أنا في الأساس مجرد وإذ تؤكد من جديد أن الإجابة السابقة يعمل, ولكن أردت أن أشير إلى أنه في الواقع من السهل جدا.يبدو أنك قد تحتاج إلى إنشاء بعض EventBoxes عقد الحاجيات الخاصة بك, ولكن بعد ذلك يجب أن تعمل فقط.

يمكنك أن ترى رمز كنت أعمل في http://github.com/divegeek/BlockHead

وكنت قادرا على ذلك تماما -

<اقتباس فقرة>   

وعرض القطعة واحدة ملء كامل المساحة، ثم آخر على رأس في موقع ثابت، سواء مرئية في نفس الوقت

وفي GTK2 باستخدام GtkFixed، والعمل بها من أجل الإدراج مناسب (إدراج أولا - القاع، وأخيرا إدراج - أعلى)، و- على الأهم من ذلك !! - يمكنك إجبار GtkFixed لانها نافذة الخاص:

`f := gtk_fixed_new();
gtk_widget_set_has_window(f, 1);`

إذا كنت لا تفعل set_has_window (و، 1)، سيتم إدراج جميع النوافذ الأطفال في بعض القطعة الأم / نافذة (انظر gtk_fixed_realize () في gtkfixed.c)، وهذا قد يخلق الترتيب التصاعدي الفوضى.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top