wxWidgets и проблемы X11 в Ubuntu? - PullRequest
0 голосов
/ 13 сентября 2011

Я пытаюсь создать простой графический интерфейс на основе диалогов, используя wxWidgets.Я использую X11 / Xlib.h для захвата изображения (printscreen).Проблемы начинаются, когда я что-то изменяю в графическом интерфейсе с помощью wxSmith (например, перетаскивание новой кнопки), потому что она автоматически меняет имена кнопок на Button1, Button2 ...

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

Проблема в том, что Button1..5 уже определеныв Xh:

/* 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, чтобы они не меняли имена автоматически или просто добавляли мой префикс, например что-тоButton1?

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

Вы меняете имя переменной в конструкторе графического интерфейса или редактируете файл cpp напрямую?

Если вы редактируете вещи между //(*Initialize(PanelName) и //*) в cpp, то все сделанные вами изменения будут уничтожены (а не только изменение имени кнопки).

Если вы смотрите на вкладку «Ресурсы» (которая должна быть, если вы используете Drag 'n Drop), под ней находятся свойства выбранной в данный момент кнопки (или другого виджета). Измените свойство Var name на myButton1, чтобы изменить имя переменной.

0 голосов
/ 13 сентября 2011

Мне кажется, что вы можете просто написать

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

Я вижу, что вы используете wxSmith, плагин Rapid Application Developer (RAD) для CodeBlocks.Это означает, что вы полагаетесь на компьютерную программу для написания своего кода, который никогда не работал хорошо за все десятилетия усилий.

Мой совет, лучше всего сначала:

  1. Сделайте глубокий вдох и напишите свой собственный код.Вы многому научитесь!

  2. Выберите другой RAD.Есть много доступных , и некоторые из них должны быть более сложными и адаптированными для работы с X11.

  3. Загрузите код wxSmith.Сделайте глобальный поиск и замену Button1 -> wxSmith_Button1.Восстановить.

...