2011-07-15 2 views
1

Я работаю над простым приложением C++ для своей работы, которая должна запускаться как в Windows, так и в Linux. При работе в Windows он должен отображать простой графический интерфейс, а при работе в Linux он должен использовать текстовый интерфейс (потому что на компьютере Linux вообще не используется графический интерфейс).Qt enaubling GUI для Windows, отключающий GUI на linux

Мне было интересно, могу ли я использовать Qt для написания приложения (с его кросс-платформой) и заменить использование графического интерфейса пользователя на Linux распечатками в STDOUT с помощью «#ifndef WIN32»?

Любые другие предложения будут оценены. Программа считывает некоторые свойства из файла xml и выполняет некоторые тесты в соответствии с этими свойствами (сокеты доступа, экологические вары и т. Д.). Моя цель - написать один проект, который будет статически скомпилирован (чтобы получить незаменимый исполняемый файл) для каждой платформы и избежать создания разных проектов.

спасибо.

ответ

2

Это, безусловно, возможно, но старайтесь избегать #ifdef s по возможности.

Один из подходов заключается в том, чтобы изолировать все основные функции (обработка данных, сетевое взаимодействие и т. Д.) В классах без GUI. Затем вы пишете два набора классов для представления: один основан на QWidget s, другой, который просто выполняет ввод/вывод текста.

Чтобы обернуть его, используйте #ifdef в вас main(), чтобы выбрать, какие «презентации» классы для использования (и переключаться между QCoreApplication для не-GUI и QApplication для графического интерфейса пользователя).

Не используйте этот код #ifdef на WIN32, используйте специальную переменную. Таким образом, вы можете запускать и тестировать обе версии в среде, с которой вы более знакомы.

+0

спасибо. – user847129