创建一个Gtk按钮,背景中有一个图像,前面有一个标签
Create a Gtk Button with an image in the background, and a label in front of it
好的,我试图在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+发布。
相关文章:
- 有一个打印语句的函数是一种糟糕的编程实践吗
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 如果有一个模板构造函数只有一个泛型参数,为什么我必须有一个复制构造函数
- 有没有可能有一个只有ADL才能找到的非好友功能
- 我有一个对象,它将在整个程序的持续时间内实例化,但一个类成员不会,我应该动态分配它吗?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 在学习数据结构之前对STL有一个了解是好的吗?
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 如何在 Gnuplot 中分别绘制 2 个文件数据?我有一个文件"sin.txt",另一个文件"cos.txt",我想将它们分别绘制在一个图表上
- 是否可以在C++中有一个"generic"模板参数,该参数可以是非类型模板参数或类型?
- 我的输出中有一个额外的 0,为什么会这样
- 节点是否为空,即使它有一个值?
- 将数组信息存储到 c++ 向量中有一个"Access violation reading location"
- 在 Stream C++ 文本之前有一个额外的换行符
- 我可以有一个 ELI5 作为参考和指针以及何时使用它们吗?
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 创建一个Gtk按钮,背景中有一个图像,前面有一个标签
- 如何设置Windows窗体应用程序(c++)有一个Aero/Glass背景