c - 在 GtkScrolledWindow 或 GtkEventBox 上绘画

标签 c gtk multithreading

使用 GTK,我试图在 GtkScrolledWindow< 中包含的 GtkTextView 的一角覆盖“更多”提示(但它也可以是任何绘图对象)/。我在处理程序中为 TextView 的 expose 信号绘制提示。它有效,但是当我滚动窗口时,我得到了伪像:提示与 TextView 的内容一起移动,而不是被删除。

为了消除伪影,我在每次滚动后触发重绘。这主要是有效的,但当您快速滚动时,您仍然可以看到提示上下跳动。有什么办法可以防止这种情况发生吗?如果提示只是“ float ”在 TextView 的顶部,那就太好了。

我尝试将滚动窗口包含在 GtkEventBox 中并在其上绘制提示,但这也不起作用;滚动条和 TextView 始终覆盖提示,即使您将事件框的窗口设置在其子窗口的前面也是如此。

更新

如果我将 GtkEventBox 的公开回调与 g_signal_connect_after() 连接,那么它将在 GtkScrolledWindow 的公开回调之后被调用,并且GtkTextView。 TextView 仍然绘制在事件框上。我认为这是因为滚动是异步发生的。有人知道如何防止我的绘图被覆盖吗?

另一个更新

所以我想我真正需要的是在异步滚动完成时连接到的信号。如果我能找出那是什么时候,那么我就可以在 GtkEventBox 上触发另一个公开事件。如何在滚动完成时收到通知?

最佳答案

使用弹出窗口作为提示。这应该可以避免滚动工件的所有问题。

关于c - 在 GtkScrolledWindow 或 GtkEventBox 上绘画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659026/

相关文章:

android - 如何通过 SIM_IO 从 sim 卡读取 MSISDN?

java - 我可以重定向工作线程以在处理过程中执行不同的工作吗?

c# - 编写我自己的 IScheduler 来管理线程,最好的方法是什么?

c - C 的哈希表实现

C编译的程序在linux中可以运行,但不能在windows中运行

.net - GTK#中是否存在系统颜色集合?

macos - 为 Mac OS X 编译 libjingle/gtk+-2.0 的问题

c++ - 如何在谷歌测试中测试多线程?

c - 为什么当我在 C 语言的矩阵乘法程序中增加矩阵元素的值时会出现段错误?

c - 如何将新应用程序从 Gnome/GTK 生成到 CLI 应用程序并将其输出读回 Gnome/GTK 应用程序?