虽然我正在回答我自己的问题(因此不接受@user4815162342 的问题),但这并不意味着他是错的,它对我没有用,我的答案也更好。由于缺乏技能和时间,我只是无法弄清楚(实际上我从@user4815162342 的建议中得到了我的结果!)。
所以这就是我的做法:
1) 使用 GTK_WINDOW_POPUP 创建弹出窗口;
2) 设置popup的位置居中,背景颜色和不透明度等级和大小不同;
3)创建一个标签并将其添加到CONTAINER(弹出);
4)将弹出窗口连接到超时gtk_timeout_add(timeInMS, fadeOutCallback, popup);
5)创建回调,如下所示:
int MyClass::fadeOutCallback(gpointer caller)
{
gtk_window_set_opacity(GTK_WINDOW(caller), gtk_window_get_opacity(GTK_WINDOW(caller)) - 0.03); //The 0.03 makes the rate at fading out
if(gtk_window_get_opacity(GTK_WINDOW(caller)) == 0) //When the popup is completly opaque
{
gtk_widget_hide(GTK_WIDGET(caller));
gtk_widget_destroy(GTK_WIDGET(caller));
return false; //stop the timer
}
return true; //Keeps on calling the callback until the timer reaches timeInMS
}
可能有更好的方法来做我想做的事,但这很有吸引力,即使在播放背景视频时也是如此。希望这可以帮助任何人。(再次感谢您的输入@user4815162342!)。