Создание игры в Qt относительно окон GUI - PullRequest
5 голосов
/ 29 июня 2011

Я давно хотел запрограммировать простую игру с простым графическим интерфейсом, используя Qt (это будет ОЧЕНЬ простая игра, ничего особенного). Мне было интересно, как я могу создать несколько окон и отображать их при необходимости? Например, экран сражения и экран инвентаря. Пользователь должен видеть только один из них, но при необходимости должен иметь доступ к другому. Я использовал сложенный виджет, но я не уверен, что это правильно. Кроме того, лучше проектировать окна в конструкторе или кодировать их?

Ответы [ 3 ]

4 голосов
/ 29 июня 2011

StackWidget определенно выполнит то, что вы хотите сделать. Причина, по которой он не всегда используется для такого рода вещей, заключается в том, что все экраны созданы в начале и всегда существуют. Это означает, что для инициализации требуется немного больше времени, и вы используете больше ресурсов, чем нужно в любой момент времени

Но, как вы говорите, если это простая игра, то я не вижу в этом большой проблемы. Точно так же легко можно было бы создать пустой макет и при необходимости поменять местами инвентарь и игровые панели.

Добавьте свой голос всем, кто предлагает использовать дизайнера. Гораздо проще управлять макетами, действиями и т. Д. С помощью конструктора, чем с помощью кода.

Справочник дизайнера здесь

Так вот что я бы предложил:

Создайте свой "battleScreen.ui" - файл конструктора для вашего экрана сражения и всего, что на нем, а затем создайте свой "inventory.ui". И то, и другое может быть QWidgets или QFrames или что-то еще.

Затем создайте свой «Game.ui», который будет вашим QMainWindow.

В главном окне вашей игры вы можете добавить свой QStackWidget и разместить инвентарь и боевые экраны в виджете стека.

Если вы не знаете, как это сделать ... 1) перетащите QWidget в вашу форму (в виджет стека) 2) выберите новый QWidget и щелкните правой кнопкой мыши. 3) Выберите «Повысить до ...» 4) Заполните информацию для продвижения QWidget в свой класс инвентаря Имя повышенного класса: название вашего класса инвентаря Заголовочный файл: заголовочный файл вашего класса инвентаря 5) Нажмите добавить 6) Нажмите Продвинуть.

Надеюсь, это поможет.

0 голосов
/ 29 июня 2011

Общий ответ на общий вопрос:

  • Используйте конструктор для создания своих окон;при необходимости скрывайте и отображайте вспомогательные окна.
  • Используйте класс диспетчера потоков для управления видимостью связанного набора окон.
  • Сложенный виджет полезен для управления кнопкой / значком, внешний вид которыхизменения в зависимости от состояния;различные представления живут в стеке.
0 голосов
/ 29 июня 2011

Поскольку я не уверен, каковы ваши цели, я не могу посоветовать, подходит ли сложенный виджет, но я думаю, что вы можете добиться довольно многого, используя дизайнер и таблицы стилей. Если вам нужно кодировать некоторые части графического интерфейса, вы всегда можете добавить виджет заполнителя и заменить его кодированными элементами или сделать их потомками заполнителей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...