【问题标题】:How to add personal code into wxFormBuilder-generated class如何将个人代码添加到 wxFormBuilder 生成的类中
【发布时间】:2012-01-05 13:05:48
【问题描述】:

我玩 Eclipse + wxWidgets + wxFormBuilder

我使用wxFormBuilder 进行 GUI 设计。它生成 2 个类:第一个是基类; second 继承 first 以实现按钮点击等功能。但是每次我在 wxFormBuilder 中进行更改时,都会重新生成这两个文件。

我想知道如何向继承的类添加一些代码。例如,我有 listboxbuttonmenu item。当用户按下按钮或选择菜单项时,我想做同样的操作(向listbox添加一些字符串)。出于这个原因,我想实现通用功能“动作”。我将在 buttonmenu item 处理程序中调用此函数。我应该在哪里声明这个函数及其实现以避免删除手动代码?

谢谢。

【问题讨论】:

  • 这似乎是一个关于如何使用wxFormBuilder的问题。也许你应该添加标签?
  • 是的,我想过。但它要求 1.5k 信誉点。

标签: c++ user-interface wxwidgets wxformbuilder


【解决方案1】:

wxFormbuilder 能够为您生成派生类。位于 Tools->Generate Inherited Class 下。

此代码仅在您调用此工具时生成,因此很可能只生成一次。它派生自自动生成的类。你使用这个类并且可以在其中实现你的东西。

所以,通常的工作流程是这样的:

  • 在 formbuilder 中构建您的框架/面板
  • 生成继承类
  • 在继承的类中实现您的处理代码
  • 在 wxFormbuilder 中对表单/面板进行更改 -> 只会影响生成的类,不会影响继承的类

【讨论】:

  • 感谢您的回复。您描述了我使用 wxFormBuilder 的确切方式。不幸的是,每次我生成继承的类时,它都会刷新它的内容。继承类中的处理代码未更改,所有手动添加的功能都消失了。
  • wxFormBuilder 中有两个不同的功能:生成代码和生成继承类。后者您只使用一次并在那里实现您自己的处理代码。第一个是您对表单进行更改时所做的事情。那你到底在做什么?
  • 我完全同意你的看法。但是如果我决定在表单中添加按钮呢?我生成“一般”类。没有我的代码,没关系。但我想写一些代码作为对按钮按下的反应。我在 wxFormBuilder 中添加处理程序名称。现在我需要重新生成继承类的文件。此操作将清除我手动添加的所有函数,包括继承类中的全局变量。程序的主框架很大,一开始不能一次迭代设计。
  • 现在我明白你的意思了。这种情况确实有点不太理想。我认为归结为手动将所需的代码位添加到修改后的继承类中。至少,我就是这样做的。
  • 最后,我决定编写自己的继承类生成器。毕竟这不是很复杂。 step1 抓取基头中的所有虚函数 step2 抓取继承类中的所有函数 step3 检查基类的所有函数是否在继承类中有祖先 step4 如果某些基本函数没有分析器,则将其附加到头文件和源文件中。此操作很微妙,可以保留手动输入的代码。
【解决方案2】:

有我自己的 wxFormBuilder 继承类的代码生成器,它保留了手动代码wxFUp455

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2016-05-21
    • 1970-01-01
    • 2010-09-28
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多