Gtkmm3

2011-07-12 2 views
7

でCssStyleProviderを使用するためにはどうすればgtkmm3とC++でのプログラミングです。私は自分のプログラムでいくつかのフォントを変更したい。私はgtkmmのドキュメントでもGTK + documentaionにCssStyleProvider、書式コンテキストに関するすべてのものを読んで、私はそれを動作させることができなかったし、それについてのチュートリアルを見つけることができませんでした。私はそのGtkmm3

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*/ 

もその

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*/ 

ようにしようと、私は私のメインウィンドウを実行する前に、それを実行した後にこれらを試してみましたが、私は運を持っていないようにしようとしています。どんな助けもありがとうございます。

答えて

4

はあなたにもしなければなりません0の代わりにGTK_STYLE_PROVIDER_PRIORITY_APPLICATIONマクロを使用しようとしましたか?

asd2->add_provider(screen, asd, macro GTK_STYLE_PROVIDER_PRIORITY_APPLICATION); 

私のために、またはWindowsでも動作します。

例:

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; 
} 
1

私はgtkmmのとCSSのことは知らないが、Web上のCSSはfont-name:Sans 6それ以外

;を必要とし、あなたが持っているすべてが右GTK::CssProvider参照に基づいて見えます

+0

私は同様の問題になるこのとして疑います。セミコロンがないと問題が発生します。 – jasonmclose

+0

更新された投稿から@jasonmclose、それはポスターがコンマなしで試してみたようです。 – senshikaze

+1

最後のプロパティであれば、ウェブ上のcssにセミコロンも必要ありません。 – mycroes