GtkEntry के चारों ओर एक अच्छा गोल-कोने वाला फ्रेम होता है, जब वह केंद्रित होता है। मैं अपने स्वयं के विजेट (GtkDrawArea के शीर्ष पर निर्मित) के चारों ओर इस तरह के फ्रेम को आकर्षित करने के लिए जीटीके कैसे प्राप्त करूं?

मैंने GtkContainer के सभी वंशजों के माध्यम से स्किम किया लेकिन कुछ भी ऐसा नहीं करता है। GtkFrame है लेकिन इसका एक और उद्देश्य है और यह अलग दिखता है।

-1
exebook 4 जिंदा 2021, 11:10

2 जवाब

सबसे बढ़िया उत्तर

अपने GtkDrawingArea के draw सिग्नल में, का इस्तेमाल करें gtk_render_focus() फोकस फ्रेम को उपयुक्त स्थान पर ड्रा करने के लिए।

0
ptomato 4 जिंदा 2021, 22:34

पहले GTK3 का दस्तावेज़ीकरण पढ़ें। इसका सोर्स कोड डाउनलोड करें और प्रेरणा के लिए इसका अध्ययन करें।

GtkWidget एब्स्ट्रैक्ट सुपरक्लास में कुछ “फोकस-इन-इवेंट” GTK सिग्नल और कुछ “फोकस-आउट-इवेंट” सिग्नल और कुछ < a href="https://developer.gnome.org/gtk3/stable/GtkWidget.html#GtkWidget-draw" rel="nofollow noreferrer">“ड्रा” GTK सिग्नल; आप उन्हें स्पष्ट रूप से संभाल सकते हैं।

आपके ड्राइंग रूटीन GDK लाइब्रेरी का उपयोग करेंगे। आपका अपना विजेट GtkWidget या GtkBin का उपवर्ग हो सकता है

ध्यान दें कि GTK खुला स्रोत है,

इसलिए आप अध्ययन (प्रेरणा के लिए) gtk/gtkentry.c.

आपके GTK सिग्नल हैंडलर संभवतः g_idle_add जीटीके ईवेंट लूप में कुछ भी चलाने की आवश्यकता नहीं होने पर ड्रॉइंग को स्थगित करने के लिए.

अगर आप GCC के साथ संकलित करते हैं, तो सभी चेतावनियों और डीबग जानकारी को सक्षम करना सुनिश्चित करें, इसलिए gcc -Wall -Wextra -g का उपयोग करें (और शायद -O)। आपको बहुतों को GDB डीबगर का उपयोग करने की आवश्यकता है।

-2
Basile Starynkevitch 4 जिंदा 2021, 12:25