如何创建gtk+没有标题栏的窗口,并且可以使用调整大小和移动属性。我检查了gtk_window_set_decorated
函数,但是它禁用了窗口的调整大小和移动属性。我已经找到了这个答案,但是我不认为它与此有任何关系。
我尝试在gtk_window_set_decorated后将resizeable设置为true,但仍然不起作用
请检查代码
#include <gtk/gtk.h>
int main (int argc,
char *argv[])
{
GtkWidget *window;
/* Initialize GTK+ and all of its supporting libraries. */
gtk_init (&argc, &argv);
/* Create a new window, give it a title and display it to the user. */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "Hello World");
gtk_window_set_decorated (GTK_WINDOW (window), FALSE);
gtk_window_set_resizable (GTK_WINDOW (window), TRUE);
//gtk_window_set_gravity(GTK_WINDOW (window), GDK_GRAVITY_NORTH_EAST);
//gtk_window_set_deletable (GTK_WINDOW (window), FALSE);
gtk_widget_show (window);
/* Hand control over to the main loop. */
gtk_main ();
return 0;
}
2条答案
按热度按时间lrpiutwd1#
所以我发现有效的方法是在
gtk_window_set_decorated
设置为FALSE的情况下删除标题,然后手动改变光标并调用gtk_window_begin_resize_drag()
在鼠标按下时开始调整大小。我实现这个的方法是检查鼠标是否靠近mousemove回调的边界,如果是,用
gdk_window_set_cursor()
更改光标。当鼠标按下事件发生在边界附近时,我调用带有适当边界的
gtk_window_begin_resize_drag()
。chhqkbe12#
您可以使用GTK_WINDOW_POPUP:
如果只想关闭窗口的窗口管理器装饰,则不应使用GTK_WINDOW_POPUP。相反,使用gtk_window_set_decorated(GtkWindow *window,gboolean show)来关闭窗口装饰。