2010-10-05 14 views
6

Piszę program (tylko do celów edukacyjnych, chcę się uczyć C++) w ramach Qt. Czy można uzyskać liczbę monitorów podłączonych do mojego komputera i uruchomić program na innym monitorze? Chcę mieć opcję w menu Właściwości, gdzie mogę powiedzieć, na którym monitorze wyświetlać program.Uruchom program na drugim monitorze (framework Qt)

Nie mogę znaleźć niczego na wiki programisty Qt, może moglibyście mi pomóc z dokumentacją, jak to zrobić?

Dzięki

Odpowiedz

8

Można używać QDesktopWidget zidentyfikować ile ekrany zostały dołączone do komputera, a następnie pobierać geometrię każdego ekranu:

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

Można też sprawdzić, czy to jest virtual desktop, ale to może nie mieć znaczenia dla użytkowników.

+0

myślę linki wymagają aktualizacji. – sje397

12

Możesz uzyskać liczbę monitorów i całkowity rozmiar ekranu za pomocą QDesktopWidget, np.

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

Edit 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(); 
} 
Powiązane problemy