user-interface - 如何更改 GTKWidget 的厚度?
问题描述
这张图片显示了我当前应用程序中的一个场景。这种外观是不希望的。空的 GtkList 只占屏幕的一半。我怎样才能让它占据屏幕的五分之四而完成按钮占据五分之一?我一如既往地使用 C 编程语言和刚刚升级到的 Gtk3。如果有办法调整小部件的粗细,我也遇到了胖文本条目的问题。使其同质化使它们都相同,但我怎样才能使它不同质化,但让我决定每个小部件获得多少屏幕?
#include "DisplayHelp.h"
#define NOTHING
void DisplayHelp(void) {
gtk_main_quit(NOTHING);
gtk_widget_destroy(Box);
Box = gtk_vbox_new(0, 0);
GtkWidget *Button = NULL;
GtkWidget *List = gtk_list_box_new();
gtk_container_add(GTK_CONTAINER(Box), List);
gtk_container_add(GTK_CONTAINER(Window), Box);
Button = gtk_button_new_with_label("Done");
gtk_box_pack_start(GTK_BOX(Box), Button, 1, 1, FALSE);
g_signal_connect(Button, "clicked", DisplayOptions, NULL);
// I need a function to adjust the size of the button here
printf("Entering the screen: Help\n");
gtk_widget_show_all(Window);
gtk_main();
}
解决方案
您可以使用 GtkGrid,将其垂直同质性设置为 TRUE,并根据所需比例为每个小部件设置高度:
grid = gtk_grid_new ();
gtk_grid_set_row_homogeneous (grid, TRUE);
/*l t w h*/
gtk_grid_attach (grid, top_widget, 0, 0, 1, 4);
gtk_grid_attach (grid, bot_widget, 0, 0, 1, 1);
但是,它可能不是最好的设计解决方案,因为您正在浪费按钮空间。
推荐阅读
- python - XML 树删除节点
- python - 如何将 yaxis 刻度标签设置在固定位置,以便当我向左或向右滚动时,yaxis 刻度标签应该可见?
- azure - Azure devops 中的 Docker 任务不接受“$(pwd)”作为变量
- php - 文本在 SQLite 数据库上显示为“ŒÃ〜³Ã〜ªÛŒ”
- ruby-on-rails - 如何处理带有两个数组的复选框,如果在一个数组中,用户单击应附加在第二个数组中的复选框
- jmeter - 并发用户和负载
- javascript - UniSharp/laravel-ckeditor 在 laravel 5.7 中不起作用
- google-cloud-platform - 如何在 GCP 中进行 FTP 服务器(摄取)负载平衡?
- python - 错误:需要 Microsoft Visual C++ 14.0。即使它已安装
- reactjs - React 不同组件之间的通信