创建一个Gtk按钮,背景中有一个图像,前面有一个标签

时间:2011-08-02 19:57:03

标签: c++ gtk gtkmm gtk3

好的,我正在尝试在C ++(gtkmm 3.0)中创建一个Gtk按钮,它在后台有一个我可以根据状态改变的图像,以及前景中我可以根据语言字符串改变的标签。我尝试扩展Gtk :: EventBox类,它对图像很有用,但是我不能在其中添加标签。我尝试扩展Gtk :: Container类,但后来我不能把它放在我的Gtk :: VButtonBox中。必须有一种更好的方法来做到这一点,而无需重新发明轮子。

任何建议都将不胜感激。

谢谢,保罗

2 个答案:

答案 0 :(得分:0)

实际上你需要发明轮子。你需要的是两个小部件的组合。我知道在Gedit,Nautilus和新的Gtk + 3.1.X中都有类似的实现,其中包含一个名为GtkOverlay的小部件。

  
      
  • GtkOverlay是一个新容器,允许放置一个或多个
      “覆盖”小部件位于另一个小部件之上。这可以用于   '浮动状态栏'和类似界面。
  •   

来自here。您有两个选择,等待它出来,或者您复制代码并将其调整到您的应用程序,直到新的Gtk +发布。

答案 1 :(得分: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);

我用背景测试了它:#F00将按钮转换为漂亮的红色,所以它也应该与图像一起使用,只需保持css标准。您可以基本上完​​成所有操作,例如更改字体,更改按钮标签的填充等等: - )