Ubuntu中的wxWidgets和X11问题

wxWidgets and X11 issues in Ubuntu?

本文关键字:X11 问题 wxWidgets 中的 Ubuntu      更新时间:2023-10-16

我正在尝试使用wxWidgets制作一个简单的基于对话框的GUI。我使用X11/Xlib.h进行图像捕获(打印屏幕)。问题开始时,我改变任何GUI使用wxSmith(例如拖放新按钮),因为它会自动更改按钮名称Button1,Button2…

Button1 = new wxButton(this, ID_BUTTON1, _("About"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));

问题是Button1…在X.h:

中已经定义了。
/* button names. Used as arguments to GrabButton and as detail in ButtonPress
   and ButtonRelease events.  Not to be confused with button masks above.
   Note that 0 is already defined above as "AnyButton".  */
#define Button1         1
#define Button2         2
#define Button3         3
#define Button4         4
#define Button5         5

我能以某种方式修改wxWidgets不自动更改名称或只是添加我的自定义前缀,例如somethingButton1?

您是在GUI设计器中更改var名称,还是直接编辑cpp文件?

如果你在cpp中编辑//(*Initialize(PanelName)//*)之间的内容,那么你所做的任何更改都将被删除(不仅仅是更改按钮名称)。

如果您正在查看Resources选项卡(如果您正在使用拖放选项卡,您应该查看),它的下面是当前选择的按钮(或其他小部件)的属性。

Var name属性更改为myButton1,以更改变量名。

在我看来,你可以简单地写

myButton1 = new wxButton(this, ID_BUTTON1, _("About"), ....

我看到你正在使用wxSmith,一个用于CodeBlocks的快速应用开发者(RAD)插件。这意味着你要依靠计算机程序来为你编写代码,这是几十年来从来没有很好地工作过的东西。

我的建议是,最好先:

  1. 深呼吸,写你自己的代码。你会学到很多!

  2. 选择另一个RAD。有许多可用的,其中一些应该更复杂,适合在X11上运行。

  3. 下载wxSmith代码。做一个全局查找&替换Button1 -> wxSmith_Button1。重建。