在自定义微件周围绘制焦点框


GtkEntry

在聚焦时有一个漂亮的圆角框架。如何让 GTK 在聚焦时围绕我自己的小部件(构建在GtkDrawArea之上)绘制这样的框架?

我浏览了GtkContainer的所有后代,但没有这样做。有GtkFrame但它有另一个目的,看起来不同。

在 GtkDrawingArea 的draw信号中,使用gtk_render_focus()在适当的位置绘制焦点框。

首先阅读 GTK3 的文档。下载其源代码,并研究它以获得灵感。

GtkWidget抽象超类有一些"聚焦在事件"的 GTK 信号和一些"聚焦事件"信号和一些"绘制"的 GTK 信号;你可以显式处理它们。

绘图例程将使用 GDK 库。您可以拥有自己的小部件,一个GtkWidgetGtkBin的子类

请注意,GTK 是开源的,

所以你可以研究(为了灵感)gtk/gtkentry.c的源代码

当 GTK 事件循环中不需要运行任何内容时,GTK 信号处理程序可能会使用g_idle_add来推迟绘制。

如果使用 GCC 进行编译,请务必启用所有警告和调试信息,因此请使用gcc -Wall -Wextra -g(也许是-O)。您需要使用 GDB 调试器。

最新更新