StackWidget определенно выполнит то, что вы хотите сделать. Причина, по которой он не всегда используется для такого рода вещей, заключается в том, что все экраны созданы в начале и всегда существуют. Это означает, что для инициализации требуется немного больше времени, и вы используете больше ресурсов, чем нужно в любой момент времени
Но, как вы говорите, если это простая игра, то я не вижу в этом большой проблемы. Точно так же легко можно было бы создать пустой макет и при необходимости поменять местами инвентарь и игровые панели.
Добавьте свой голос всем, кто предлагает использовать дизайнера. Гораздо проще управлять макетами, действиями и т. Д. С помощью конструктора, чем с помощью кода.
Справочник дизайнера здесь
Так вот что я бы предложил:
Создайте свой "battleScreen.ui" - файл конструктора для вашего экрана сражения и всего, что на нем, а затем создайте свой "inventory.ui". И то, и другое может быть QWidgets или QFrames или что-то еще.
Затем создайте свой «Game.ui», который будет вашим QMainWindow.
В главном окне вашей игры вы можете добавить свой QStackWidget и разместить инвентарь и боевые экраны в виджете стека.
Если вы не знаете, как это сделать ...
1) перетащите QWidget в вашу форму (в виджет стека)
2) выберите новый QWidget и щелкните правой кнопкой мыши.
3) Выберите «Повысить до ...»
4) Заполните информацию для продвижения QWidget в свой класс инвентаря
Имя повышенного класса: название вашего класса инвентаря
Заголовочный файл: заголовочный файл вашего класса инвентаря
5) Нажмите добавить
6) Нажмите Продвинуть.
Надеюсь, это поможет.