Всплывающее окно QComboBox не отображается при размещении в наложении поверх QVTKOpenGLNativeWidget в полноэкранном режиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Всплывающее окно QComboBox не отображается при размещении в наложении поверх QVTKOpenGLNativeWidget в полноэкранном режи

Сообщение Anonymous »

Я встраиваю виджет рендеринга VTK в приложение Qt 6 с помощью QVTKOpenGLNativeWidget.
Окно содержит QVTKOpenGLNativeWidget, используемый для 3D-рендеринга, завернутый в QFrame.
Поверх него QStackedLayout с режимом StackAll добавляет наложение QWidget, содержащий элементы управления пользовательского интерфейса, такие как QComboBox.
Все работает нормально:

Код: Выделить всё

#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 

int main(int argc, char* argv[]){
QApplication app(argc, argv);

QMainWindow window;
QWidget* central = new QWidget;
window.setCentralWidget(central);

QStackedLayout* stacked = new QStackedLayout(central);
stacked->setStackingMode(QStackedLayout::StackAll);

// QFrame container for VTK widget
QFrame* frame = new QFrame;
frame->setFrameShape(QFrame::Box);
frame->setLineWidth(2);

QVBoxLayout* frameLayout = new QVBoxLayout(frame);
frameLayout->setContentsMargins(0, 0, 0, 0);
frameLayout->setSpacing(0);

// VTK Widget
auto vtkRenderWidget = new QVTKOpenGLNativeWidget;
auto renderWindow = vtkSmartPointer::New();
auto renderer = vtkSmartPointer::New();
renderWindow->AddRenderer(renderer);
vtkRenderWidget->setRenderWindow(renderWindow);
renderer->SetBackground(0.1, 0.1, 0.2);

frameLayout->addWidget(vtkRenderWidget);
stacked->addWidget(frame);

// Overlay with QComboBox
QWidget* overlay = new QWidget;
overlay->setStyleSheet("background: rgba(255, 0, 0, 40);");
stacked->addWidget(overlay);

QVBoxLayout* vbox = new QVBoxLayout(overlay);
QLabel* label = new QLabel("Select value:");
QComboBox* combo = new QComboBox;
combo->addItems({ "Value 1", "Value 2", "Value 3" });
vbox->addWidget(label);
vbox->addWidget(combo);
vbox->addStretch();

stacked->setCurrentIndex(1);

window.showFullScreen();
//window.resize(800, 600);
//window.show();

return app.exec();
}
...за исключением того, что когда главное окно находится в полноэкранном режиме, всплывающее окно QComboBox не появляется.
Я использую Qt 6.8.3, VTK 9.4.2 и Visual Studio 2022 (MSVC 17) в Windows 11. Примечательно, что если я нажму клавишу Win, а затем нажму на поле со списком, отобразится список.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ativewidge
Ответить

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

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

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

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

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