簡體   English   中英

如何在調整大小和移動屬性工作的情況下創建沒有標題欄的 gtk+ windows

[英]How to create gtk+ windows without title bar with resize and move properties working

如何創建沒有標題欄的 gtk+ windows,調整大小和移動屬性正常工作。 我檢查了gtk_window_set_decorated function,但它禁用了 window 的調整大小和移動功能。我已經找到了這個答案,但我認為它與它沒有任何關系。

我嘗試在 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;
    }

所以我發現工作是刪除標題, gtk_window_set_decorated設置為FALSE。 然后手動更改光標並調用gtk_window_begin_resize_drag()以開始在mousedown上調整大小。

我如何實現這個是檢查鼠標是否接近mousemove回調的邊框,如果是這樣,用gdk_window_set_cursor()更改光標。

在邊界附近的mousedown事件中,我使用適當的邊框調用gtk_window_begin_resize_drag()

你可以使用 GTK_WINDOW_POPUP:

#include <gtk/gtk.h>
    int main (int argc,
    char *argv[])
    {  
      GtkWidget *window;
      /* Initialize GTK+ and all of its supporting libraries. */
      gtk_init (&argc, &argv);
      gtk_widget_show (window);
      gtk_main ();
      return 0;
    }

如果您只想為 window 關閉 window 經理裝飾,則不應使用 GTK_WINDOW_POPUP。相反,請使用 gtk_window_set_decorated (GtkWindow *window, gboolean show) 關閉 window 裝飾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM