2009-08-07 12 views
37

Come posso rendere il mio widget a schermo intero? Ho provato qualcosa di simile:Widget schermo intero

void MainWindow::SetFullScreen() 
{ 
    // Make our window without panels 
    this->setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint); 
    // Resize refer to desktop 
    this->resize(QApplication::desktop()->size()); 

    this->setFocusPolicy(Qt::StrongFocus); 
    this->setAttribute(Qt::WA_QuitOnClose, true); 

    qApp->processEvents(); 
    show(); 
    this->setFocus(); 
} 

Ma il widget non è sui pannelli di sistema. Qualche altra idea?

SO: Linux

risposta

52

QWidget::showFullScreen() è quello che serve - grandi opere sotto Linux + di Windows nei miei progetti per anni - ma attenzione, non ci dovrebbero essere due chiamate di questa funzione (ad esempio, in prima convocazione QMainWindo->showFullScreen(). e quindi MyWidget->showFullScreen()).

Ciao, Chris

+0

Grazie. Funziona molto! – Ockonal

+4

A meno che "MyWidget" non sia un'altra finestra, MyWidget-> showFullScreen() non farà nulla. –

+0

che ne dici di configurazioni di più schermi con XRandr, Eyefinity o Xinerama? Funziona correttamente? – drahnr

8

Questo codice vi permetterà di impostare uno schermo intero con un doppio clic e per tornare alla visualizzazione normale con un doppio clic di nuovo.

void myWidget::mouseDoubleClickEvent(QMouseEvent *e) { 
    QWidget::mouseDoubleClickEvent(e); 
    if(isFullScreen()) { 
    this->setWindowState(Qt::WindowMaximized); 
    } else { 
    this->setWindowState(Qt::WindowFullScreen); 
    } 
}