GtkEntry
在聚焦时有一个漂亮的圆角框架。如何让 GTK 在聚焦时围绕我自己的小部件(构建在GtkDrawArea
之上)绘制这样的框架?
我浏览了GtkContainer
的所有后代,但没有这样做。有GtkFrame
但它有另一个目的,看起来不同。
在 GtkDrawingArea 的draw
信号中,使用gtk_render_focus()
在适当的位置绘制焦点框。
首先阅读 GTK3 的文档。下载其源代码,并研究它以获得灵感。
GtkWidget
抽象超类有一些"聚焦在事件"的 GTK 信号和一些"聚焦事件"信号和一些"绘制"的 GTK 信号;你可以显式处理它们。
绘图例程将使用 GDK 库。您可以拥有自己的小部件,一个GtkWidget
或GtkBin
的子类
请注意,GTK 是开源的,
所以你可以研究(为了灵感)gtk/gtkentry.c
的源代码。
当 GTK 事件循环中不需要运行任何内容时,GTK 信号处理程序可能会使用g_idle_add
来推迟绘制。
如果使用 GCC 进行编译,请务必启用所有警告和调试信息,因此请使用gcc -Wall -Wextra -g
(也许是-O
)。您需要使用 GDB 调试器。