簡體   English   中英

減少 GTK+ 中的按鈕高度

[英]Reduce button height in GTK+

我正在創建一個具有很長列表的 GTK+ 3 C 應用程序。 當用戶單擊任何列表項時,應用程序需要注冊。 現在我正在列出 GTK+ 按鈕的列表,因為樣式是傳達功能的最清晰的方式。 然而,寬大的垂直填充意味着按鈕占用的空間大約是所需空間的兩倍。

我將如何 go 關於減少按鈕的高度?

下圖顯示了我所說的填充和高度。 我希望文本占據大部分垂直空間,而不是填充。 這意味着需要降低高度。 在此處輸入圖像描述

以下是我用來創建按鈕的代碼。 loglist是一個垂直方向的盒子元素。

    GtkWidget* btn = gtk_button_new();
    GtkWidget* box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
    GtkWidget* text = gtk_label_new("Data");
    gtk_box_pack_start(GTK_BOX(box), text, TRUE, TRUE, 0);
    gtk_container_add(GTK_CONTAINER(btn), box);
    gtk_widget_set_halign(text, GTK_ALIGN_START);
    gtk_button_set_relief(GTK_BUTTON(btn), GTK_RELIEF_NONE);
    gtk_box_pack_start(GTK_BOX(loglist), btn, FALSE, FALSE, 0);

這是我使用每個人提供給我的信息制定的解決方案。

GtkCssProvider* css = gtk_css_provider_new();
GdkScreen* screen = gdk_display_get_default_screen(gdk_display_get_default());
GtkStyleContext* context;

gtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER(css),
        GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
gtk_css_provider_load_from_data(css,
        "button {padding-top: 0px; padding-bottom: 0px; margin-bottom: -8px;}",
        -1, NULL);

/* Insert Buttons */
context = gtk_widget_get_style_context(btn);
gtk_style_context_add_class(context, "data_btn");
/* End Insert Buttons */

g_object_unref(css);

結果如下所示。

在此處輸入圖像描述

在聲明和分配 btn 小部件之后,“插入按鈕”注釋之間的代碼需要包含在插入按鈕的代碼的 rest 中。 我用來插入按鈕的代碼可以在問題中看到。 我在 GtkWidget 聲明之后但在其他任何內容之前插入這兩行。 我可以使用“button”標簽而不是“.data_btn”標簽獲得相同的效果,但它會影響所有按鈕,而不僅僅是列表。

負邊距通常是不好的做法,因為如果更改主題,它可能而且會中斷,並且它需要在所有按鈕下方額外添加一個填充框。 對我來說,它是一個占位符,直到我能弄清楚其他東西,它會在未來 go 消失。

我希望所有內容都在一個可執行文件中。 如果您(通過谷歌或其他方式找到此內容的人)沒有相同的目標,那么您最好使用 css 文件。 使用gtk_css_provider_load_from_file function 代替load_from_data function。

暫無
暫無

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

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