[英]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.