2010-10-05 9 views
6

Estoy escribiendo un programa (solo para fines de aprendizaje, quiero aprender C++) en el marco de Qt. ¿Es posible obtener cuántos monitores están conectados a mi computadora y hacer que el programa se inicie en un monitor diferente? Quiero tener una opción en el menú Propiedades donde puedo decir en qué monitor mostrar el programa.Programa de inicio en el segundo monitor (marco de Qt)

No pude encontrar nada en la wiki del desarrollador de Qt, ¿quizás ustedes pueden ayudarme con la documentación sobre cómo hacer esto?

Gracias

Respuesta

8

Puede utilizar QDesktopWidget para identificar cuántas pantallas que haya conectado a su ordenador y luego para recuperar la geometría de cada pantalla:

if (desktopWidget->screenCount() > 1) 
{ 
    QRect geom = desktopWidget->screenGeometry(1); 
    // do something useful with this information 
} 

También es posible que desee comprobar para ver si es un virtual desktop, pero eso puede no ser importante para sus usuarios.

+0

creo que los enlaces deben actualizarse. – sje397

12

Puede obtener el número de monitores y el tamaño total de la pantalla con QDesktopWidget, por ejemplo.

QDesktopWidget *desktop = QApplication::desktop(); 
if (1==desktop->screenCount() ) { 
    // single monitor - use built in 
    showFullScreen(); 
} else {  
    QRect rect = desktop->screenGeometry(1); 
    move(rect.topLeft()); 
    setWindowState(Qt::WindowFullScreen);  
} 
0

Editar main.cpp

#include "mainwindow.h" 
#include <QApplication> 
#include <QWindow> 
#include <QDesktopWidget> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
int ScreenIDWhereToShowWindow = 1; 
QApplication a(argc, argv); 
MainWindow w; 


QDesktopWidget *desk = new QDesktopWidget(); 

w.setGeometry(desk->screenGeometry(ScreenIDWhereToShowWindow)); 
w.showFullScreen(); 
QApplication::setOverrideCursor(Qt::BlankCursor); 

qDebug() << desk->screenGeometry(0); 
qDebug() << desk->screenGeometry(1); 
qDebug() << desk->screenGeometry(2); 
return a.exec(); 
} 
Cuestiones relacionadas