0

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

任何建议将不胜感激。

谢谢,保罗

4

2 回答 2

0

实际上,您将需要发明轮子。您需要的是两个小部件的组合。我知道在 Gedit、Nautilus 中有类似的实现,并且新的 Gtk+ 3.1.X 包含一个类似 GtkOverlay 的小部件。

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

那来自这里。你有两个选择,你等待它出来,或者你复制代码并适应你的应用程序,直到新的 Gtk+ 发布。

于 2011-08-03T16:11:32.110 回答
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);

我用 background:#F00 测试了它,它把按钮变成了漂亮的红色,所以它也应该适用于图像,只要保持 css 标准。您基本上可以做所有事情,例如更改字体、更改按钮标签的填充等等 :-)

于 2014-02-09T00:21:25.777 回答