2010-07-08 20 views

Respuesta

15

Puedo usar este código para la segunda pantalla en pantalla completa con éxito tanto en Windows & Linux

QRect screenres = QApplication::desktop()->screenGeometry(1/*screenNumber*/); 
SecondDisplay secondDisplay = new SecondDisplay(); // Use your QWidget 
secondDisplay->move(QPoint(screenres.x(), screenres.y())); 
secondDisplay->resize(screenres.width(), screenres.height()); 
secondDisplay->showFullScreen(); 
+1

Esto no funciona durante más tiempo en Qt5. QWidget se muestra en la primera pantalla. – user502144

+0

Confirmado que no funciona en Qt5. La ventana movible después de configurar la pantalla completa parece funcionar. – eozgonul

+0

Creo que el problema con este código es que los tamaños de pantalla pueden variar, por lo que solo dividir la resolución completa con una cuenta de pantalla es una apuesta que puede funcionar dependiendo de las resoluciones de pantalla. –

3

showFullScreen primero, y luego setGeometry.

QT5 probado OK

+0

¿Te importaría incluir una muestra de código? Haría que tu respuesta sea más valiosa. –

+0

En realidad, esto no funciona, WindowState se revierte a NoState cuando se llama a setGeometry. – eozgonul

3

Mi opinión sobre esto:

auto const desktop(QApplication::desktop()); 

    setGeometry(desktop->screenGeometry(1)); 

#ifndef Q_OS_WIN 
    setWindowState(Qt::WindowState(Qt::WindowFullScreen | windowState())); 
#endif // Q_OS_WIN 
9

Una forma de hacerlo en QT5 es utilizar QWindow::setScreen para ajustar la pantalla en la que se debe mostrar la ventana. QWidget tiene un windowHandle() que devuelve el puntero al QWindow.

Aquí es cómo mostrar su widget en segunda pantalla en el modo de pantalla completa:

QWidget * widget = new QWidget(); 
widget->show(); 
widget->windowHandle()->setScreen(qApp->screens()[1]); 
widget->showFullScreen(); 
-1

Este problema se resolvió durante el uso de ventana-> showFullScreen() en lugar de ventana-> show().

Cuestiones relacionadas