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



好的,我试图在c++ (gtkmm 3.0)中创建一个Gtk按钮,该按钮在背景中有一个图像,我可以根据状态进行更改,在前景中有一个标签,我可以根据语言字符串进行更改。我尝试扩展Gtk::EventBox类,它非常适合图像,但我不能在其中放置标签。我尝试扩展Gtk::容器类,但我不能把它放在我的Gtk::VButtonBox。一定有更好的方法来做这件事,而不用重新发明轮子。

如有任何建议,不胜感激。

谢谢,保罗

应该可以:

   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标准。基本上你可以做任何事情,比如改变字体,改变按钮标签的填充等等:-)

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

    GtkOverlay是一个新的容器,允许放置一个或多个
    "覆盖"小部件在另一个小部件的顶部。这可以用于"浮动状态栏"和类似的界面。

它来自这里。你有两种选择,要么等待它出来,要么复制代码并将其改编到你的应用中,直到新的Gtk+发布。

最新更新