2010-10-05 20 views
6

Sto scrivendo un programma (solo per scopi di apprendimento, voglio imparare C++) nel framework Qt. È possibile ottenere quanti monitor sono collegati al mio computer e avviare il programma su un altro monitor? Voglio avere un'opzione nel menu Proprietà in cui posso dire su quale monitor mostrare il programma.Avvio del programma sul secondo monitor (quadro Qt)

Non riesco a trovare nulla nella wiki dello sviluppatore Qt, forse voi ragazzi potete aiutarmi con la documentazione su come farlo?

Grazie

risposta

8

È possibile utilizzare QDesktopWidget per identificare quanti schermi è stato collegato al computer e poi per recuperare la geometria di ogni schermata:

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

Si consiglia inoltre di controllare per vedere se è un virtual desktop, ma potrebbe non essere importante per i tuoi utenti.

+0

Penso che il tuo link devono essere aggiornate. – sje397

12

È possibile ottenere il numero di monitor e le dimensioni totali dello schermo con QDesktopWidget ad es.

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

Modifica 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(); 
} 
Problemi correlati