2017-05-10 47 views
4

我試圖讓在Windows 7上我的GTK3應用程序的外觀原生我試圖在以下問題How to get native windows decorations on GTK3 on Windows 7+ and MSYS2如何讓Windows 7上的GTK3看起來是本地的?

的答案,但它不工作。我在Windows上的GTK3版本是3.22,我正在使用Vala語言。試用GTK3 3.20版本也無濟於事。我也嘗試在代碼中使用​​3210更改應用程序的背景顏色,它在Ubuntu中可用,但在Windows中不可用。在Windows中,應用程序主題和所有CSS手動設置均被忽略。

有什麼辦法可以達到這個目的嗎?謝謝。

回答

4

它的工作通過調用代碼,之前show_all()顯示主應用程序窗口:

Gtk.Settings.get_default().gtk_theme_name = "win32"; 

當使用自定義主題,主題的定位應該是:「YourApplicationExecutable \共享\主題\ ThemeFolder」按照在代碼中的How to get native windows decorations on GTK3 on Windows 7+ and MSYS2

接受的答案描述和gtk_theme_name名稱設定應該是南包含主題的文件夾。

請注意,方法get_default()可讓您獲得默認的GDK屏幕。如果您想要更多地控制特定的小部件,請改用方法get_settings()覆蓋您想要更改主題的特定小部件。

來源:

How to get native windows decorations on GTK3 on Windows 7+ and MSYS2

https://valadoc.org/gtk+-3.0/Gtk.CssProvider.html

https://valadoc.org/gtk+-3.0/Gtk.Settings.html

+1

雖然,在CSSProvider手動設置設置更改喜歡的背景顏色特定部分仍在Windows上被忽略。例如,我可以使用這種方法,在Ubuntu中更改主題,並使用自定義背景覆蓋主題背景,但在Windows中,它會被忽略,並且不會發生CSS覆蓋。 –

+1

看起來像應用的CSS選擇器和屬性在GTK版本之間改變,因此,它在Ubuntu中工作,但不在Windows中。因爲在編寫本文的時刻,Ubuntu 16.04擁有GTK 3.18,而Windows擁有GTK 3.22。所以我的CSSProvider是正確的,但是因爲改變背景顏色的方式在不同的版本中是不同的,所以它在一個OS中工作,但在另一個OS中不工作。我通過使用帶「background-color」屬性的「.background」選擇器來修復它,而不是使用帶有「background」屬性的「GtkWindow」選擇器,因爲後者在GTK 3.20或更高版本中不起作用。 –

相關問題