C++ Ubuntu中的wxWidgets和X11问题?

C++ Ubuntu中的wxWidgets和X11问题?,c++,wxwidgets,x11,codeblocks,C++,Wxwidgets,X11,Codeblocks,我正在尝试使用wxWidgets创建一个简单的基于对话框的GUI。我使用X11/Xlib.h进行图像捕获(printscreen)。当我使用wxSmith更改GUI中的任何内容(例如拖放新按钮)时,就会出现问题,因为它会自动将按钮名称更改为Button1、Button2 Button1 = new wxButton(this, ID_BUTTON1, _("About"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("

我正在尝试使用wxWidgets创建一个简单的基于对话框的GUI。我使用X11/Xlib.h进行图像捕获(printscreen)。当我使用wxSmith更改GUI中的任何内容(例如拖放新按钮)时,就会出现问题,因为它会自动将按钮名称更改为Button1、Button2

Button1 = new wxButton(this, ID_BUTTON1, _("About"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
问题是按钮1..5已经在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?

在我看来,您只需编写

myButton1 = new wxButton(this, ID_BUTTON1, _("About"), ....
我看到您正在使用wxSmith,一个用于代码块的快速应用程序开发(RAD)插件。这意味着您正依赖计算机程序为您编写代码,这是几十年来一直无法正常工作的事情

我的建议是,最好首先:

  • 深呼吸,编写自己的代码。你会学到很多

  • 选择另一个RAD。有很多,其中一些应该更加复杂,并且适合使用X11运行

  • 下载wxSmith代码。执行全局查找和替换按钮1->wxSmith_按钮1。重建


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

    如果您在cpp中编辑
    /(*初始化(PanelName)
    /*)
    之间的内容,则您所做的任何更改都将被删除(不仅仅是对按钮名称的更改)


    如果您正在查看Resources选项卡(如果使用Drag'n Drop,则应该是该选项卡),它下面是当前所选按钮(或其他小部件)的属性。将
    Var name
    属性更改为
    myButton1
    以更改变量名。

    是的,但每次更改GUI时我都必须这样做,因此如果有更简单的解决方案,我会寻找。请解释更多!你必须编写代码来“改变某些东西”-你不能仅仅通过愿望来改变它们。我通过改变设计形式来改变它,例如使用拖放按钮,而不是编码。仍然不确定你的问题是什么。听起来有点像你在使用“米老鼠”对话框布局应用程序。这些东西除了玩具程序外没有任何用处。要构建和维护一个真正有用的应用程序,您需要编写代码。如果你想得到一个有用的答案,请指定你正在使用的表单设计器,以便其中的专家可以帮助你。“当我使用wxSmith更改GUI中的任何内容(例如拖放新按钮)时,问题就开始了,因为它会自动将按钮名称更改为Button1,Button2…”-出于好奇,我安装了Code::Blocks,并尝试使用wxSmith的拖放功能。这类事情不会发生。具有自定义名称的按钮保留其名称,新按钮命名为Button{123…}。