【问题标题】:GTK3: Getting a style's class propertyGTK3:获取样式的类属性
【发布时间】:2011-10-26 13:45:43
【问题描述】:

我正在尝试获取 GTK 样式类的文本颜色。 我有一个 GtkStyleContext ,其中包含小部件路径和我想要获取其属性的类。

GtkWidgetPath* widgetPath = gtk_widget_path_new ();
gtk_widget_path_append_type(widgetPath, GTK_TYPE_WINDOW);
gtk_widget_path_iter_set_name(widgetPath, -1 , "UnityPanelWidget");

GtkStyleContext *context = gtk_style_context_new();
gtk_style_context_set_path(context, widgetPath);
gtk_style_context_add_class(context, "gnome-panel-menu-bar");
gtk_style_context_add_class(context, "unity-panel");

我使用了 gtk_style_context_lookup_color,它获得了正常的文本颜色,但不是 gnome-panel-menu-bar 或 unity-panel 中的文本颜色。

我尝试使用 GtkCssProvider,但它在没有我添加的类的情况下获得了通用样式。

我在 Qt 应用程序中使用它来获得原生 GTK3 的外观和感觉。 此代码在 GTK 应用程序中运行良好。

谢谢!

【问题讨论】:

    标签: qt gtk theming gtk3


    【解决方案1】:

    据我所知,您将无法使用上面的代码,因为 Qt 使用 Gtk2 而不是 Gtk3。这意味着您将获得一个核心转储,其中包含类似于以下内容的消息:

    Gtk-ERROR **: GTK+ 2.x symbols detected. Using GTK+ 2.x and GTK+ 3 in 
    the same process is not supported
    

    您也许可以通过从 diff 进程访问 Gtk 3 库来做一些 hacky,但这是一个 hack。

    【讨论】:

    • 我通过在Qt中使用不同的样式避免了在同一进程中执行Gtk2和Gtk3的错误,因此我能够使用Qt运行Gtk3。我最终做了几个黑客。无论如何感谢您的回复!
    猜你喜欢
    • 2011-11-02
    • 2013-03-20
    • 2016-02-16
    • 2015-07-20
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多