wxwidgets 用xml来描述界面,在程序里获取 变量和事件

本文介绍了如何利用wxWidgets库中的XML资源功能,结合wxFormBuilder工具,快速构建和管理GUI界面。通过加载XML文件,可以简化界面创建过程,并且讨论了处理中文显示问题的方法,通过设置特定标志和保存XML文件为UTF8格式,解决了中文显示不正常的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果对界面美观程序比较高,手写代码是不可避免的。
但如果做的是一些像只是为了显示、控制之类的程序,可能更快的把程序捣鼓出来就好了。
wxwidgets 有这样的一个功能,就是能用xml写成界面就能显示
编辑xrc的工具是wxformbuilder,开源免费的,也足够用了,我一开始没找到怎么 生成xrc,后来某次偶然看到了下面....原来有c++,py,xrc的生成。

wxwidgets里有个例子,叫xrcdemo
大 体是是这样。
平时创建wxwidgets程序,我们一般用wxframe,wxdialog
拿wxframe来举例,我们一般从 wxfrrame派生,然后在初始化函数里创建控件。
MyFrame::MyFrame(wxWindow* parent)
{
wxXmlResource::Get()->LoadFrame(this, parent, wxT("main_frame"));
}
而 现在只要调用这一句就够了。
事件处理方面也有所变动。
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(XRCID("unload_resource_menuitem"), MyFrame::OnUnloadResourceMenuCommand)
EVT_MENU(wxID_ABOUT, MyFrame::OnAboutToolOrMenuCommand)
END_EVENT_TABLE()

获得相关的控件:
wxAnimationCtrl *ctrl = XRCCTRL(*win, "controls_animation_ctrl", wxAnimationCtrl);


加 载xml的地方一般在app::init里面,像这样子
wxXmlResource::Get()->InitAllHandlers();
// Load all of the XRC files that will be used. You can put everything
// into one giant XRC file if you wanted, but then they become more
// diffcult to manage, and harder to reuse in later projects.
// The menubar
if (!wxXmlResource::Get()->Load(wxT("rc/menu.xrc")))
return false;
现在还有个问题,就是缺省对中文支持不好,这个我明天来想个办法。

 

 

搞定中文了,其实不像想象中那样复杂。
我用了
wxXmlResource::Get()->SetFlags(0);
然后保存的xrc是用的utf8格式。
这样就正常显示中文了。我猜测是我的xrc里的coding上写了utf8,wxxmlresource缺省会再转一次码,可能就转出问题了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值