2011-08-02 23 views
0

私は、バックグラウンドでイメージを変更できるC++(gtkmm 3.0)のGtkボタンを作成しようとしています言語ストリングに応じて変更できるフォアグラウンドのラベルが表示されます。私はイメージのために素晴らしい作品Gtk :: EventBoxクラスを拡張しようとしましたが、ラベルを置くことができません。私はGtk :: Containerクラスを拡張しようとしましたが、それを私のGtk :: VButtonBoxに入れることはできません。車輪を再発明せずにこれを行うより良い方法があります。イメージをバックグラウンドで作成し、その前にラベルをつけたGtkボタンを作成する

ご意見をいただければ幸いです。

ありがとう、ポール

+0

可能な複製[GTKの他のウィジェットより透明な背景でテキストをレンダリングするにはどうすればいいですか? /stackoverflow.com/questions/5296618/how-can-i-render-text-with-transparent-background-over-other-widgets-in-gtk) – ptomato

答えて

0

実際にホイールを発明する必要があります。あなたが必要とするのは、2つのウィジェットの構成です。私はGedit、Nautilusにそのような実装を実装していることを知っています。新しいGtk + 3.1.Xには、GtkOverlayというようなことをするウィジェットが含まれています。

  • GtkOverlayは別のウィジェットの上に1以上の
    「オーバーレイ」ウィジェットを配置することを可能にする新しいコンテナです。これは、 の 'フローティングステータスバー'などのインターフェイスで使用できます。

これはhereからです。 2つの選択肢があります。新しい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の標準に保つ必要がありますので、素敵な赤のボタンを変換#1 F00を。フォントを変更したり、ボタンラベルのパディングを変更したりするなど、基本的にすべてを行うことができます:-)

関連する問題