首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Gtkmm3中使用CssStyleProvider

如何在Gtkmm3中使用CssStyleProvider
EN

Stack Overflow用户
提问于 2011-07-12 23:04:30
回答 2查看 4.4K关注 0票数 9

我用gtkmm3在c++中编程。我想在我的程序中改变一些字体。我在gtkmm文档和gtk+文档中阅读了所有关于CssStyleProvider和StyleContext的内容,但我无法让它工作,也找不到任何关于它的教程。我正试着那样做

代码语言:javascript
复制
Glib::ustring data;
data="GtkMenuBar, GtkMenuItem {font-name: Sans 6}"; /*tried with semi-colon, too*/
Glib::RefPtr<Gtk::CssProvider> asd = Gtk::CssProvider::create();
Glib::RefPtr<Gtk::StyleContext> asd2 = Gtk::StyleContext::create();
asd->load_from_data(data);
asd2->add_provider(asd, 0); /*also tried different priorities*/

我也试过了

代码语言:javascript
复制
Glib::ustring data;
data="GtkMenuBar, GtkMenuItem {font-name: Sans 6}"; /*tried with semi-colon, too*/
Glib::RefPtr<Gtk::CssProvider> asd = Gtk::CssProvider::create();
Glib::RefPtr<Gdk::Screen> screen;
Glib::RefPtr<Gtk::StyleContext> asd2 = Gtk::StyleContext::create();
asd->load_from_data(data);
(mainWindow.get())->get_property("screen", screen);
asd2->add_provider(screen, asd, 0); /*also tried different priorities*/

在运行我的主窗口之前和之后,我尝试了这些,但我没有运气。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-23 18:31:31

您是否也尝试过使用宏GTK_STYLE_PROVIDER_PRIORITY_APPLICATION而不是0?

代码语言:javascript
复制
asd2->add_provider(screen, asd, macro GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);

适用于我,也适用于Windows。

示例:

代码语言:javascript
复制
int main(int argc, char **argv) {

  Main app(argc, argv);
  Glib::ustring data = "GtkLabel {color: #ff00ea;font: Comic Sans MS 12}";
  auto css = CssProvider::create();
  if(not css->load_from_data(data)) {
      cerr << "Failed to load css\n";
      std::exit(1);
  }
  Label label("test");
  Window win;
  auto screen = Gdk::Screen::get_default();
  auto ctx = label.get_style_context();
  ctx->add_provider_for_screen(screen, css, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
  win.add(label);
  win.show_all();

  app.run(win);
  return 0;
}
票数 5
EN

Stack Overflow用户

发布于 2011-07-13 09:13:09

我不知道gtkmm和css,但是web上的css在font-name:Sans 6之后需要一个;

除此之外,您所拥有的一切都是基于GTK::CssProvider参考的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6666387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档