Qt6 Как разместить полупрозрачный Qwidget через другой QwidgetC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Qt6 Как разместить полупрозрачный Qwidget через другой Qwidget

Сообщение Anonymous »

Я пытаюсь разместить полупрозрачный Qwidget сверх моего QWindow , который я обернул в контейнер, используя Qwidget :: CreateWindowContainer . Мне удалось показать их отдельно, но не одновременно. Любая справка оценена, может добавить любые данные. < /P>
В создании окна игры. < /P>
void AetherEngine::createInGameWindow()
{
qVulkanInstance.setApiVersion(QVersionNumber(1, 0));

if (vkInit.enableValidationLayers) {
qVulkanInstance.setLayers(QByteArrayList() setParent(mainWindow->windowHandle());
inGameWindow->resize(windowWidth, windowHeight);
inGameWindow->setTitle("Aether");
inGameWindow->create();

vkInit.surface = qVulkanInstance.surfaceForWindow(inGameWindow);
if (vkInit.surface == VK_NULL_HANDLE) {
throw std::runtime_error("Failed to create Vulkan surface for Qt window.");
}

inGameContainerWidget = new QWidget;
inGameContainerWidget->setFixedSize(windowWidth, windowHeight);

inGameStackedLayout = new QStackedLayout(inGameContainerWidget);
inGameStackedLayout->setStackingMode(QStackedLayout::StackAll);

inGameWidget = QWidget::createWindowContainer(inGameWindow, inGameContainerWidget);

inGameStackedLayout->addWidget(inGameWidget);

connect(inGameWindow, &InGameWindow::framebufferResized, this, &AetherEngine::onFramebufferResized);

connect(inGameWindow, &InGameWindow::windowClosed, [this]() {
gameContext.requestedGameState = GameState::EXIT;
});
}
< /code>
Пауза.void AetherEngine::createPauseMenuWidget() {
pauseMenuWidget = new PauseMenuWidget(inGameContainerWidget);
pauseMenuWidget->setFixedSize(windowWidth, windowHeight);
pauseMenuWidget->setAttribute(Qt::WA_TranslucentBackground, true);
inGameStackedLayout->addWidget(pauseMenuWidget);

connect(pauseMenuWidget, &PauseMenuWidget::resumeGame, [this]() {
gameContext.requestedGameState = GameState::IN_GAME;
});

connect(pauseMenuWidget, &PauseMenuWidget::openSettings, [this]() {
gameContext.requestedGameState = GameState::SETTINGS_MENU;
});

connect(pauseMenuWidget, &PauseMenuWidget::openMainMenu, [this]() {
gameContext.requestedGameState = GameState::MAIN_MENU;
});

connect(pauseMenuWidget, &PauseMenuWidget::exitGame, [this]() {
gameContext.requestedGameState = GameState::EXIT;
});
}
< /code>
Классы они наследуют. < /p>
class PauseMenuWidget : public QWidget
class InGameWindow : public QWindow
< /code>
переменные, которые у меня есть в своем основном классе. < /p>
QStackedWidget* stackedWidget = nullptr;
MainWindow* mainWindow = nullptr;

MainMenuWidget* mainMenuWidget = nullptr;
SettingsMenuWidget* settingsMenuWidget = nullptr;
PauseMenuWidget* pauseMenuWidget = nullptr;

InGameWindow* inGameWindow = nullptr;
QWidget* inGameContainerWidget = nullptr;
QWidget* inGameWidget = nullptr;
QStackedLayout* inGameStackedLayout = nullptr;
< /code>
Как я пытаюсь показать виджеты < /p>
void AetherEngine::changeState(GameState newGameState) {
if (gameContext.currentGameState == newGameState) {
std::cout setCurrentWidget(settingsMenuWidget);
break;
case GameState::IN_GAME:
QApplication::setOverrideCursor(Qt::BlankCursor);
character.camera._isFirstMouse = true;
stackedWidget->setCurrentWidget(inGameContainerWidget);
break;
case GameState::PAUSED:
pauseMenuWidget->show();
pauseMenuWidget->raise();
break;
case GameState::EXIT:
QCoreApplication::quit();
break;
default:
break;
}
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... er-qwidget
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • При использовании Pyside2 у меня есть: QWidget: необходимо создать QApplication перед QWidget.
    Anonymous » » в форуме Linux
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous
  • Полупрозрачный фон в Vision Pro/Safari
    Anonymous » » в форуме CSS
    0 Ответы
    47 Просмотры
    Последнее сообщение Anonymous
  • Полупрозрачный фон в Vision Pro/Safari
    Anonymous » » в форуме CSS
    0 Ответы
    76 Просмотры
    Последнее сообщение Anonymous
  • Полупрозрачный ящик навигации над строкой состояния не работает
    Anonymous » » в форуме Android
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Swiftui: полупрозрачный фон для полноценного экрана
    Anonymous » » в форуме IOS
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»