2011-08-02 26 views
0

好吧,我正在嘗試在C++(gtkmm 3.0)中創建一個Gtk按鈕,該按鈕在背景中有一個圖像,可以根據這個圖像進行更改開啓狀態,以及前景中可根據語言字符串改變的標籤。我試圖擴展Gtk :: EventBox類,它非常適合圖像,但我不能在其中添加標籤。我嘗試了擴展Gtk :: Container類,但後來我不能把它放到我的Gtk :: VButtonBox中。沒有重新發明輪子,必須有更好的方式來做到這一點。在背景中創建一個帶有圖像的Gtk按鈕,並在其前面有一個標籤

任何建議將不勝感激。

謝謝,保羅

+0

可能的重複[如何在GTK中使用透明背景渲染其他窗口小部件?](http:/ /stackoverflow.com/questions/5296618/how-can-i-render-text-with-transparent-background-over-other-widgets-in-gtk) – ptomato

回答

0

其實你需要發明輪子。你需要的是兩個小部件的組合。我知道在Gedit,Nautilus中有類似的實現,而新的Gtk + 3.1.X包含一個類似於GtkOverlay的小部件。

  • GtkOverlay是一個新的容器,它允許將一個或多個
    「疊加」的小部件上的其他部件的頂部。這可用於 '浮動狀態欄'和類似的界面。

來自here。你有兩個選擇,你等待它出來,或者你複製和代碼,並將其調整到你的應用程序,直到新的Gtk +獲得釋放。

+0

謝謝,我最終擴展了Gtk :: Layout並設置了一個圖像的背景,然後在上面放置一個標籤。 – paullj1

0

這應該工作:

GtkCssProvider* my_css_provider = gtk_css_provider_new(); 
    gtk_css_provider_load_from_data(my_css_provider,"GtkWidget { background:url(yourimage.jpg); }",-1,NULL); 
    GtkStyleContext* context = gtk_widget_get_style_context(yourbutton); 
    gtk_style_context_add_provider (context, GTK_STYLE_PROVIDER (my_css_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); 

我的背景進行了測試:這改變了按鈕,一個漂亮的紅色,所以它也應與圖像的工作,只是不停地對CSS標準#F00。你基本上可以做所有的事情,比如改變字體,改變你的按鈕標籤的填充等等.-)

相關問題