前边已经说过用glade设计界面然后动态装载,接下来再来看看怎么改变程序的皮肤(主题)
首先从http://art.gnome.org/themes/gtk2下载喜欢的主题,从压缩包里提取gtk-2.0文件夹让它和我们下边代码生成的可执行文件放在同一个目录下,这里我下载的的http://art.gnome.org/download/themes/gtk2/1317/GTK2-CillopMidnite.tar.gz
然后用glade设计界面,命名为main.glade,一会让它和我们下边代码生成的可执行程序放在同一个目录下边
然后开始写代码如下:
//main.cc
#include <gtkmm.h>
#include <libglademm/xml.h>
int main(int argc, char *argv[])
{
Gtk::Main kit(argc,argv);
Gtk::Window *pWnd;
gtk_rc_parse("E:\\theme-viewer\\themes\\gtk-2.0\\gtkrc");
Glib::RefPtr<Gnome::Glade::Xml> refXml;
try
{
refXml = Gnome::Glade::Xml::create("main.glade");
}
catch(const Gnome::Glade::XmlError& ex)
{
Gtk::MessageDialog dialog("Load glade file failed!", false, \
Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK);
dialog.run();
return 1;
}
refXml->get_widget("main", pWnd);
if(pWnd)
{
kit.run(*pWnd);
delete pWnd;
pWnd = 0;
}
return 0;
}
编译链接,然后把这三样东东按我们原订的位置放好,运行,效果如下:
首先从http://art.gnome.org/themes/gtk2下载喜欢的主题,从压缩包里提取gtk-2.0文件夹让它和我们下边代码生成的可执行文件放在同一个目录下,这里我下载的的http://art.gnome.org/download/themes/gtk2/1317/GTK2-CillopMidnite.tar.gz
然后用glade设计界面,命名为main.glade,一会让它和我们下边代码生成的可执行程序放在同一个目录下边
然后开始写代码如下:
//main.cc
#include <gtkmm.h>
#include <libglademm/xml.h>
int main(int argc, char *argv[])
{
Gtk::Main kit(argc,argv);
Gtk::Window *pWnd;
gtk_rc_parse("E:\\theme-viewer\\themes\\gtk-2.0\\gtkrc");
Glib::RefPtr<Gnome::Glade::Xml> refXml;
try
{
refXml = Gnome::Glade::Xml::create("main.glade");
}
catch(const Gnome::Glade::XmlError& ex)
{
Gtk::MessageDialog dialog("Load glade file failed!", false, \
Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK);
dialog.run();
return 1;
}
refXml->get_widget("main", pWnd);
if(pWnd)
{
kit.run(*pWnd);
delete pWnd;
pWnd = 0;
}
return 0;
}
编译链接,然后把这三样东东按我们原订的位置放好,运行,效果如下:
这是我写的一个小程序用来测试主题
http://blogimg.chinaunix.net/blog/upfile2/081223182134.zip
用法:把主题包解压到themes目录下,然后在config.theme中第一行写上主题名字,程序还可以列出可用的主题名
注意:
gtk_rc_parse()只在创建窗口以前使用才有效
我日志虽然我写的是Gtkmm的迷人不过……
http://blogimg.chinaunix.net/blog/upfile2/081223182134.zip
用法:把主题包解压到themes目录下,然后在config.theme中第一行写上主题名字,程序还可以列出可用的主题名
注意:
gtk_rc_parse()只在创建窗口以前使用才有效
我日志虽然我写的是Gtkmm的迷人不过……
评论
发表评论