18

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

Community
  • 1
  • 1
user386576
  • 183
  • 1
  • 1
  • 4

5 Answers5

20

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();
Nejat
  • 31,784
  • 12
  • 106
  • 138
19

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();
mmonem
  • 2,811
  • 2
  • 28
  • 38
6

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
user1095108
  • 14,119
  • 9
  • 58
  • 116
5

showFullScreen first, then setGeometry.

Qt5 tested OK

user2253705
  • 51
  • 1
  • 3
-1

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

Debangana
  • 87
  • 3