如何解决围绕自定义小部件绘制焦点框 注意 GTK 是开源的,
GtkEntry
在聚焦时有一个漂亮的圆角框架。我如何让 GTK 在我自己的小部件(构建在 GtkDrawArea
之上)周围绘制这样一个框架?
我浏览了 GtkContainer
的所有后代,但没有这样做。有 GtkFrame
,但它有另一个目的,看起来也不同。
解决方法
在 GtkDrawingArea 的 draw
信号中,使用 gtk_render_focus()
在适当的位置绘制焦点框。
先阅读documentation of GTK3。下载 its source code,并研究它以获得灵感。
GtkWidget
abstract superclass 有一些 “focus-in-event” GTK signal,一些 “focus-out-event” signal 和一些 “draw” GTK signal;你可以明确地处理它们。
您的绘图程序将使用 GDK 库。您可以将自己的小部件作为 GtkWidget
或 GtkBin
注意 GTK 是开源的,
这样您就可以学习(寻找灵感)gtk/gtkentry.c
的源代码。
当不需要在 GTK g_idle_add
中运行时,您的 GTK 信号处理程序可能会使用 event loop 来推迟绘图。
如果您使用 GCC 进行编译,请确保启用所有警告和调试信息,因此请使用 gcc -Wall -Wextra -g
(可能还有 -O
)。您可能需要使用 GDB debugger。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。