5 用wxSmith进行可视化设计

  依照第4章的要求看过了相关的书籍。应该具备了通过直接写代码的方式界面程序的能力。

而在实际的project开发中,做界面的工作常通过可视化的操作完毕。wxSmith就是这样一个支持wxWidgets高速开发的一个工具,专门用来做界面。

  wxSmith已经是Code::Blocks的一个标准配置。在Code::Blocks菜单中能够看到这一项。

  这一章,我们将从做一个应用程序開始。应用程序的窗体中有两个button,按SayHellobutton,屏幕上会出现“Hello World”。按Quitbutton,程序将结束。

5.1 用wxSmith创建应用程序的外观

  创建一个空项目。名称为plain。

选择菜单wxSmith -> Add wxFrame。将要建立的Frame命名为plainFrame。

  在左側的Management窗体中,显示Resources页签。我们看到的界面例如以下图所看到的:

  

  窗体中由很多小点构成的部分,就是将来应用程序的界面部分,我们称之为“设计区”。

  在整个窗体的左下方,是“属性/事件”窗体,被称为“属性编辑区”在当中能够设置属性。以及增加响应“OnClick”之类事件的代码。点击靠左的显示和设置“属性”。而右边的显示和设置“事件”(如今动手试一下)。

  如今仅仅看到整个Frame的属性和事件。我们做些改动。

  比如。将Default size属性后面的“√”取消掉,将随后的Width和Height分别设置为400和200。

再将用来设置窗体标题栏的title属性改变为“Hello world”,例如以下图所看到的:

  

  点击设计区右方的show preview图标,能够看到当前设置好的窗体。可见所做设置起了作用。例如以下图:

  

  在设计区下方,有一排小button,用于向窗体中插入“控件”,例如以下图,用鼠标在其上滑过,能够看到其名称。如wxBitmapButton、wxPanel、wxStaticText、wxButton等。

  

  可见。wxSmith提供了相当丰富的控件。

  以下。向你的窗体中增加四个控件,各自是:1个wxPanel,1个wxStaticText,2个wxButton。增加时,在控件栏中点击控件,然后。到窗体中的合适位置再点一下,控件即被增加。

调整其位置。使看起来例如以下图所看到的:

  

  逐个选择增加的控件。在“属性编辑区”观察并改变当中的部分属性:

  • 静态文本框:其Identifier属性是ID_STATICTEXT1,将其Label属性中的值删除。

  • button1:其Identifier属性是ID_BUTTON1,将其Label属性中的值改为&SayHello。

  • button2:其Identifier属性是ID_BUTTON2。将其Label属性中的值改为&Quit。

  再点击设计区右方的show preview图标,观察设计好的窗体,例如以下所看到的:

  

5.2 为控件增加事件处理程序

  应用程序中。须要为button设置OnClick事件,决定事件发生时要做的“动作”。也即要定义事件响应函数。

  做法是,选中Quitbutton。在“属性编辑区”点击靠右边的button设置“事件”。

下图是初时的状态,--None--标示着如今还没有事件代码:

  

  点击右边的向下三角。选择“--Add new handler--”,系统自己主动定义了一个函数体为空的函数:

void PlainFrame::OnButton2Click(wxCommandEvent& event)
{
}

  如今须要做的。是增加退出程序须要的语句。

增加后函数是:

void PlainFrame::OnButton2Click(wxCommandEvent& event)
{
Close(true);
}

  相同的方法。为SayHellobutton加上事件的处理,函数为:

void PlainFrame::OnButton1Click(wxCommandEvent& event)
{
if(StaticText1->GetLabel().Contains(wxT("world")))
StaticText1->SetLabel(StaticText1->GetLabel() + wxT(" again"));
else
StaticText1->SetLabel(wxT("Hello world"));
}

  在整个应用程序的开发工作即将结束之际。我们能够完整观察一下已经开发出的程序。

  

  在Code::Blocks左側的Management窗体中。选择Projects页签。打开项目的Sources,即源程序部分的PlainFrame.cpp,以及Headers部分的PlainFrame.h,能够看到的程序的全貌,如上图所看到的。

  原来,前面利用wxSmith的全部设计,其结果都转变为了在前几章在看的代码。

  wxSmith利用可视化的界面,是在为我们自己主动生成程序!

  这时候编译程序,假设有错误,參考3.1.2小节的处理方式,改动程序或配置环境。

  最后。应该仅仅有一个错误:undefined reference to `WinMain@16'。

  注意到此时的程序,仅仅是定义了窗体类,还缺少整个程序的主控部分。仿照在《wxWidgets tutorial》中见过的无数样例,在项目中增加以下的两个文件:

main.h

#include <wx/wx.h>

class MyApp : public wxApp
{
public:
virtual bool OnInit();
};

main.cpp

#include "main.h"
#include "PlainFrame.h" IMPLEMENT_APP(MyApp) bool MyApp::OnInit()
{
PlainFrame *plainFrame = new PlainFrame(NULL);
plainFrame->Show(true); return true;
}

  此时,能够让让执行程序了。

以下是程序执行期间的一个截图:

  

5.3 写代码与拖控件

  用wxSmith能够帮助程序猿用可见的方式高速地做出应用程序的界面。一个问题是:p 这样的“自己主动化”的手段。是不是让第4章辛苦看书手写代码所花的功夫白费了?

  这个观点有些道理。有些业内人士描写叙述他们的工作,就是拖控件。这样的话,C++程序猿说得少一些。用的开发工具越高级。越要这样说。

  拖控件。也有水平高低,不必妄自菲薄。而确实,系统开发能力和水平。很多其它是在拖控件的背后。

  第4章辛苦看书手写代码,是掌握wxWidgets构架的必要,是探知其根源的途径。

优秀程序猿要上得了厅堂(直接写代码),也下得了厨房(拖控件)。哪样方便哪样来。

以至于,拖控件解决不了的,就直接写代码完毕。

  能拖控件的人多。能写代码的人相对少。

看第5章,不必等到第4章的功夫全然具备再说。而读完、练完了第5章,第4章一定要回头再好好看。

有了写代码能力的支撑,拖得一手好控件也有了保证。前面的Hello world仅仅是一个开端。还有非常多复杂的,也是构成良好交互功能的控件等着你拖好、用好。

5.4 深入wxSmith学习的建议

  在http://wiki.codeblocks.org/index.php?title=WxSmith_tutorials 中提供了9个教程,英文版的。跟着做下去。会明确很多其它。用中学英语。非常划算的一件事情。

  附件中的“WxSmith_tutorials.pdf”文档是这9个教程早期的一个版本号。能够离线读这个教程。

  能够自拟些小题目开发一下。逐渐就能过渡到开发项目。

  抛砖引玉,给几个小题目:

  (1)设计GUI程序,计算a+b=?,參考界面例如以下,在前两个文本框中输入a和b,点击“计算”button后,在第3个文本框中出a+b的结果。

  

  (2)用三个文本框输入一元二次方程的三个系数,解出方程的根。

能够定义一个一元二次方程类来解决有关的计算问题。

  (3)不再写了。计算器、记事本、绘图板,适合的题目,多的是了。学会拟小题目,这也是课外自主学习能找到的感觉。

================= 迂者 贺利坚 CSDN博客专栏=================
|== IT学子成长指导专栏 专栏文章的分类文件夹(不定期更新) ==|
|== C++ 课堂在线专栏  贺利坚课程教学链接(分课程年级) ==|
|== 我写的书——《逆袭大学——传给IT学子的正能量》    ==|
===== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =====

版权声明:本文博主原创文章。博客,未经同意不得转载。

wxWidgets谁刚开始学习指南(5)——使用wxSmith可视化设计的更多相关文章

  1. UI学习笔记---第十三天可视化设计 XIB, StoryBoard

    一.XIB Xib是一种苹果提供的快速构建界面的编程方式,主要是为了简化MVC中的V的构建 Xib提供可视化的编辑界面,能大大提升页面布局效率 Xib常用操作 为控件关联事件 为空间指定delegat ...

  2. 《C/C++学习指南》 - 关于本书

    称号 :<C/C++学习指南> 笔者: 邵制成 在线学习(免费),在线答疑 (免费) 创作目的:想以自己的能力和经验为国内(及国外)的读者奉献一本好书,一本让人一看就懂."不可能 ...

  3. shell学习指南-阅读笔记

    shell学习指南真不是刚开始学习shell应该看得书,虽然其中讲了简单的linux命令,shell语法等,但是每章也有些深入和生僻地方,我想如果我刚学shell看到这样的地方一定会头疼的要死.或许也 ...

  4. 最棒的 JavaScript 学习指南(2018版)

    译者注:原文作者研究了近2.4万篇 JavaScript 文章得出这篇总结,全文包含学习指南.新人上手.Webpack.性能.基础概念.函数式编程.面试.教程案例.Async Await.并发.V8. ...

  5. Java工程师学习指南 完结篇

    Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...

  6. Vim 学习指南

    作者:耀耀 出处:http://www.linuxeden.com/html/news/20130820/142667.html Vim 学习指南 来源:开源中国社区 作者:耀耀 关注我们:   你想 ...

  7. Java工程师学习指南(完结篇)

    Java工程师学习指南 完结篇 先声明一点,文章里面不会详细到每一步怎么操作,只会提供大致的思路和方向,给大家以启发,如果真的要一步一步指导操作的话,那至少需要一本书的厚度啦. 因为笔者还只是一名在校 ...

  8. Java工程师学习指南

    java学习指南-四个部分:分别是入门篇,初级篇,中级篇,高级篇 第一步是打好Java基础,掌握Java核心技术,                                            ...

  9. (转)2019年 React 新手学习指南 – 从 React 学习线路图说开去

    原文:https://www.html.cn/archives/10111 注:本文根据 React 开发者学习线路图(2018) 结构编写了很多新手如何学习 React 的建议.2019 年有标题党 ...

随机推荐

  1. WebClient 请求返回的是Gbk编码解决方案

    WebClient client = new WebClient();                client.Headers.Clear();                client.Hea ...

  2. eclipse 更换国内镜像

    大家在用eclipse下载插件,或更新插件的时候,有木有觉得速度贼慢,蜗牛似的速度简直让习惯了4G时代的我们抓狂到底,废话不说,先给大家奉献解决办法 网上找到的国内镜像总结: 1.企业贡献: 搜狐开源 ...

  3. POJ 3624 Charm Bracelet 0-1背包

    传送门:http://poj.org/problem?id=3624 题目大意:XXX去珠宝店,她需要N件首饰,能带的首饰总重量不超过M,要求不超过M的情况下,使首饰的魔力值(D)最大. 0-1背包入 ...

  4. HINTERNET应包含的头文件

    #include <afxinet.h> DWORD status=0;DWORD dwLen=sizeof(DWORD); if(!HttpQueryInfo(hRequest,HTTP ...

  5. [React] Use React.cloneElement to Modify and Add Additional Properties to React Children

    In this lesson we'll show how to use React.cloneElement to add additional properties to the children ...

  6. Ubuntu下成功安装QQ2013

    阳光小强最近用Win8系统感觉特别不爽,中午果断换了一个win7系统,又想着能不能搞个双系统(最近在看一些linux东西),于是就开始整起来.结果并不好,linux虽然整好了,但是硬盘全部格式化了,当 ...

  7. 安装使用jupyter(原来的notebook)

    1.安装pyzmq 使用pip install pyzmq,安装不成功. 使用easy_install.exe pyzmq.成功安装. 2.安装tornado pip tornado 安装完尚不成功. ...

  8. [内核编程] 键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试

    键盘过滤第一个例子ctrl2cap(4.1~4.4)汇总,测试 完整源代码 /// /// @file ctrl2cap.c /// @author wowocock /// @date 2009-1 ...

  9. 11G、12C安装结束需要做的一些操作

    修改spfile参数:修改前,先备份 create pfile from spfile; alter system set memory_target=0 scope=spfile;alter sys ...

  10. 【机器学习实战】第3章 决策树(Decision Tree)

    第3章 决策树 <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/ ...