【问题标题】:GTK+ Set Font SizeGTK+ 设置字体大小
【发布时间】:2017-04-29 04:25:54
【问题描述】:

作为before

MenuItem 对我的用例来说太小了。
因此,我的问题是,“如何增加文本“保存”、“加载”和“退出”的字体大小?”

下面的代码可以改变“保存”文本的样式,除了它不能改变字体大小

执行可执行文件时,会出现以下警告:

Gtk-WARNING **: Theme parsing error: Styles.css:10:14: Junk at end of value


font-size: 25px; 行被删除(或注释掉)时,警告消失。

这看起来好像font-size 没有在 GTK+3 中实现,但它在
https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15 上列为有效属性


所以问题仍然存在,“如何使用这种方法增加字体大小?


样式.css

/*
    Valid Font Properties:
        https://developer.gnome.org/gtk3/stable/chap-css-properties.html#id-1.5.3.3.15
*/

.Item_Save {
    background: rgba(000, 255, 000, 1);
    font-style: italic;
    font-weight: 800;
    font-size: 25px;
    padding: 10px 10px 10px 10px;
}


C源文件

#include <gtk/gtk.h>

int main (int argc, char *argv[]) {
    gtk_init(&argc, &argv);


    GtkCssProvider* Provider = gtk_css_provider_new();
    GdkDisplay* Display = gdk_display_get_default();
    GdkScreen* Screen = gdk_display_get_default_screen(Display);

    gtk_style_context_add_provider_for_screen(Screen, GTK_STYLE_PROVIDER(Provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
    gtk_css_provider_load_from_path(GTK_CSS_PROVIDER(Provider), "Styles.css", NULL);


    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");



    GtkStyleContext *Context;
    Context = gtk_widget_get_style_context(Item_Save);
    gtk_style_context_add_class(Context, "Item_Save");



    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;
}

【问题讨论】:

    标签: css fonts font-size gtk3


    【解决方案1】:

    您可能正在点击this bug。似乎某些版本的 Gtk3 忽略了字体大小和字体。这个错误是在 Ubuntu 上报告的,但我找不到这是否已转发给 Gtk3 团队。

    另一方面,Gtk 错误跟踪器报告了 related problem in Gtk.3.16+,这可能与您的问题有关。

    我会尝试在这里编译你的程序并报告。

    报告:

    这里似乎工作得很好:

    请注意,我安装了 Gtk+ 版本 3.20.6。另外,请注意,与窗口标题相比,原始字体大小(“File”、“Load”和“Exit”)看起来相当合理。

    更新:根据您的评论,我猜您仍在使用 3.6.x 版本。自3.6以来存在巨大差异!尤其是 CSS 实现已经明显成熟。从 3.18 到 3.20,很多很多事情都发生了变化。我很确定自 3.6 以来字体大小问题已得到解决。 (刚刚检查过 - 3.6 已经快 3 岁了)。 CSS 系统变化的一个指标是,有必要在每个新的 Gtk+ 版本中更新所有 Gtk+ '主题'。

    【讨论】:

    • 我正在使用 Linux(20 多年前放弃了 Windows)。但是这些问题不应该取决于操作系统,因为您构建在 Gtk+ 函数上来完成您的工作(以及重新编译的 Linux 库)。当然,Gtk+ 的 Windows 端口可能落后几个版本。你有哪个 Gtk+ 版本?
    • 我的 GTK+ 版本是 3.6.4,比当前版本落后很多。我可能应该更新
    • 噢……你真的应该更新了。自 3.6 以来存在 巨大 差异!尤其是 CSS 实现已经明显成熟。从 3.18 到 3.20,很多很多事情都发生了变化。我很确定自 3.6 以来字体大小问题已得到解决。 (刚查过——3.6快3岁了)
    • 将 GTK+ 更新至 3.22.4 版,一切正常!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 2020-06-12
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多