2016-12-13 227 views
0

由於beforeGTK +設置字體大小

的的MenuItems是我的使用情況下太小。
因此,我的問題是,「我怎麼可能會增加文本的字體大小‘保存’,‘加載’和‘退出?’」

下面的代碼是可以改變的風格「保存」文字,只是它是無法更改字體大小

當執行可執行文件,以下警告出現:

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


因此,問題仍然列爲有效的屬性,「我怎麼增加字體大小使用這種方法?


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

回答

2

你可能會擊中this bug。似乎有些版本的Gtk3忽略了字體大小和字體。這個bug在Ubuntu上報告過,但是我找不到這是否被轉發到了Gtk3團隊。

另一方面,Gtk錯誤跟蹤器報告一個related problem in Gtk.3.16+,這可能與您的問題有關。

我會嘗試在這裏編譯你的程序並回報。

報告:

這似乎是工作只是在這裏罰款:

enter image description here

請注意,我有GTK +版本3.20.6安裝。此外,請注意,與窗口標題相比,原始字體大小看起來相當合理(「文件」,「加載」和「退出」)。

更新:從您的評論,我收集你仍然在版本3.6.x.自3.6以來有巨大的差異!特別是CSS實現已經顯着成熟。從3.18到3.20,許多事情都發生了變化。我很確定字體大小問題自3.6以來已經得到解決。 (剛剛檢查 - 3.6將近3歲)。CSS系統變化的一個指標是,有必要在每個新的Gtk +版本中更新所有Gtk +「主題」。

+0

我正在使用Linux(在20多年前放棄了Windows)。但是,這些問題不應該依賴於操作系統,因爲您建立在Gtk +函數上來完成您的工作(以及重新編譯的Linux庫)。當然,Gtk +的Windows端口可能有幾個版本。你有哪個Gtk +版本? – jcoppens

+0

我的GTK +版本是3.6.4之後的許多版本。我應該更新 –

+1

Oohhh ...你真的*應該更新。自3.6以來有*巨大的差異!特別是CSS實現已經顯着成熟。從3.18到3.20,許多事情都發生了變化。我很確定字體大小問題自3.6以來已經得到解決。 (剛剛檢查 - 3.6差不多3年) – jcoppens