WXwidgets для графического интерфейса на C++:

Я новичок в создании GUIS и использую wxwidgets для создания программ с графическим интерфейсом в CodeBlocks. Я следую этим учебникам здесь:

http://wiki.codeblocks.org/index.php?title=WxSmith_tutorials

Я понял, как создавать диалоговые окна и фреймы. Теперь я создал на C++ программу, которая считывает информацию из файла .txt и вызывает метод displayInfo(), который выводит эту информацию с помощью cout. Что я хотел бы сделать, так это распечатать эту информацию в одном окне, нажав кнопку, скажем: «Печать информации».

Часть, которую я нахожу трудной, заключается в том, как вызвать мой метод displayInfo() из main.cpp фрейма и как отображать эту информацию в окне вместо терминала. Я попытался импортировать файл заголовка моего класса в main.cpp фрейма и вызвал displayInfo(), но я не думаю, что это правильный способ сделать это.

Любая помощь будет оценена по достоинству.


person FranXh    schedule 09.03.2013    source источник


Ответы (2)


wxWidgets имеет несколько предопределенных диалоговых окон для отображения небольшого количества текста.

См. описание wxMessageBox.

В противном случае вам придется использовать метод DrawText на панели или в окне.

person Thomas Matthews    schedule 09.03.2013
comment
Да, это работает, но если нужно отобразить большое количество текста, это не сработает. У вас есть предложения на этот случай? - person FranXh; 10.03.2013

Я рекомендую использовать текстовый элемент управления, а затем перенаправить cout на текстовый элемент управления.

Как это:

#include <iostream>

  wxTextCtrl *control = new wxTextCtrl(...);

  wxStreamToTextRedirector redirect(control);

  // all output to cout goes into the text control until the exit from current
  // scope

Для более подробного обсуждения изящных вариаций этого трюка взгляните на:

http://docs.wxwidgets.org/2.8/wx_wxtextctrl.html

Прокрутите вниз до раздела под названием: потоки wxTextCtrl и C++.

person ravenspoint    schedule 09.03.2013