user386576
user386576

Reputation: 183

Display window full screen on secondary monitor using Qt

Seems to be possible with native controls (see here and here) so now I'm looking for some Qt code to do it.

Upvotes: 18

Views: 33757

Answers (5)

Debangana
Debangana

Reputation: 87

This problem got solved while using window->showFullScreen() instead of window->show().

Upvotes: -1

Nejat
Nejat

Reputation: 32635

One way of doing it in Qt5 is to use QWindow::setScreen to set the screen on which the window should be shown. QWidget has a windowHandle() that returns the pointer to the QWindow.

Here is how to show your widget on second screen in full-screen mode :

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

Upvotes: 20

user1095108
user1095108

Reputation: 14603

My take on this:

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

  setGeometry(desktop->screenGeometry(1));

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

Upvotes: 6

user2253705
user2253705

Reputation: 51

showFullScreen first, then setGeometry.

Qt5 tested OK

Upvotes: 5

mmonem
mmonem

Reputation: 2831

I use this code for the second display in full screen successfully on both 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();

Upvotes: 20

Related Questions