在运行Windows的计算机上,MenuItems对于我的用例来说太小了。
因此,我的问题是,“我如何增加文本的字体大小”保存“,”加载“和”退出?“”
如果没有,那么如何增加MenuItems之间的填充?
(在“加载”和“退出”之间没有添加更多的行分隔符)
此外,如果可能,我如何删除中间变量 SubMenu1 ?
裁剪截图
以下是重现的完整来源:
#include <gtk/gtk.h>
int main (int argc, char *argv[]) {
gtk_init (&argc, &argv);
GtkWidget* Window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget* MenuBar = gtk_menu_bar_new();
GtkWidget* MenuItem_File = gtk_menu_item_new_with_mnemonic("_File");
GtkWidget* SubMenu1 = gtk_menu_new();
GtkWidget* Item_Save = gtk_menu_item_new_with_mnemonic("_Save");
GtkWidget* Item_Load = gtk_menu_item_new_with_mnemonic("_Load");
GtkWidget* Item_Exit = gtk_menu_item_new_with_mnemonic("_Exit");
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Save);
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Load);
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), gtk_separator_menu_item_new());
gtk_menu_shell_append(GTK_MENU_SHELL(SubMenu1), Item_Exit);
gtk_menu_item_set_submenu(GTK_MENU_ITEM(MenuItem_File), SubMenu1);
gtk_menu_shell_append(GTK_MENU_SHELL(MenuBar), MenuItem_File);
GtkWidget* VerticalBox;
VerticalBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start(GTK_BOX(VerticalBox), MenuBar, false, false, 0);
gtk_container_add(GTK_CONTAINER(Window), VerticalBox);
gtk_widget_show_all(MenuBar);
gtk_widget_show(VerticalBox);
gtk_window_set_default_size(GTK_WINDOW(Window), 950, 600);
gtk_window_set_position(GTK_WINDOW(Window), GTK_WIN_POS_CENTER);
gtk_window_set_title(GTK_WINDOW(Window), "My Title");
gtk_widget_show(Window);
gtk_main();
return 0;
}
答案 0 :(得分:1)
Gtk3的字体大小控件(和其他样式属性)被委托给CSS文件。通常不鼓励在你的程序中执行此操作(尽管这当然是可能的 - 看看Gtk3的CSS_provider函数)。但通常你希望你的程序看起来与其他程序“兼容”,我怀疑。
原因是您的程序方面应该可以从外部控制 - 无论是出于个人品味还是可访问性的原因。因此,如果您考虑菜单等的字体样式,太小,您可以:
许多其他视觉方面都是由CSS文件控制的:元素之间的分离(例如菜单项),角落的圆角,视觉效果等等......但是,由于CSS系统,你通常可以'调整'你喜欢的项目。
编辑:如果你想在另一台机器上运行可执行文件,你可能需要一个窗口管理器来运行它,这使得上面的代码仍然有效。
还有另一个解决方案(我在上面提到,第一段),即使用CSS provider set of Gtk functions临时更改CSS。如果确实想严格编写程序,可以使用GtkWidget的modify_font
方法。