Mozilla Firefox和Ubuntu Software Center等應用程序能夠將標題欄漸變擴展到其工具欄區域。舉例如下:如何在Ubuntu Unity中獲得擴展標題欄?
我如何能實現我的應用程序相同的效果?
Mozilla Firefox和Ubuntu Software Center等應用程序能夠將標題欄漸變擴展到其工具欄區域。舉例如下:如何在Ubuntu Unity中獲得擴展標題欄?
我如何能實現我的應用程序相同的效果?
首先,您提到的兩個應用程序使用不同的工具包和技術構建,因此採用不同的方法來執行您願意執行的操作。雖然Firefox使用XUL/GTK2
,但USC使用GTK3
。我會解釋兩種方法。
Ubuntu軟件中心使用GTK3
建成,因此它的工具欄梯度的主題CSS文件中定義。是實現這一代碼是
/* primary-toolbar */
.primary-toolbar,
.primary-toolbar .toolbar,
.primary-toolbar.toolbar {
-GtkWidget-window-dragging: true;
background-image: -gtk-gradient (linear, left top, left bottom,
from (shade (@dark_bg_color, 0.96)),
to (shade (@dark_bg_color, 1.4)));
border-bottom-color: shade (@dark_bg_color, 1.1);
border-top-color: shade (@dark_bg_color, 1.09);
border-style: solid;
border-width: 1px 0 1px 0;
color: @dark_fg_color;
text-shadow: 0 -1px shade (@dark_bg_color, 0.7);
box-shadow: inset 0 1px shade (@dark_bg_color, 0.94);
}
爲了在gtk3應用程序中使用此,您必須將類primary-toolbar
分配到工具欄。有關相關文檔,請查看here。
Firefox是使用XUL構建的,並使用GTK2在GNU/Linux發行版(如Ubuntu)上呈現小部件。 Firefox的tab-bar
的樣式來自相關主題的gtkrc
文件中定義的menubar
的外觀定義。在默認主題氛圍的情況下,
style "menubar" = "dark" {
engine "murrine" {
textstyle = 2
text_shade = 0.33
gradient_shades = {1.0, 1.0, 1.0, 1.0}
lightborder_shade = 1.0
}
}
有可能實現與不同方法的其他工具包的效果,但建議你寫在gtk3您的應用程序,以便使用本機造型。
我正在使用Qt - 是否有任何方式調用GTK並檢索適當的顏色? –
在像Unity這樣的'gtk'環境下運行時,Qt使用一個名爲'Qgtkstyle'的主題渲染器,它使用當前的'gtk2'主題來渲染窗口部件。如果你嘗試在應用程序中使用'GtkStyleContext',那麼你會得到一個錯誤,你不能在同一個進程中運行gtk2和gtk3。我發現這[鏈接](http://stackoverflow.com/questions/7903518/gtk3-getting-a-styles-class-property)。儘管它沒有多大意義,但它暗示了可以使用的解決方案,但它會迫使您手動設計整個應用程序。 –
你也可以這樣做。在應用程序初始化之前產生一個子進程,並使用它通過GtkStyleContext獲取屬性。然後使用這些屬性爲工具欄繪製自定義樣式。請注意,我不知道你是否可以在Qt中做到這一點,這只是一個猜測。 –
在相同顏色的工具欄下創建漸變? – Linuxios
統一標籤用於Microsoft Unity。請不要濫用它。 –