Запустить программу на втором мониторе (Qt framework)

Я пишу программу (только для учебных целей, я хочу изучить C++) в рамках Qt. Можно ли получить, сколько мониторов подключено к моему компьютеру и запустить программу на другом мониторе? Я хочу иметь опцию в меню свойств, где я могу сказать, на каком мониторе показывать программу.

Я не мог найти ничего в вики разработчика Qt, может быть, вы, ребята, можете помочь мне с documention о том, как это сделать?

спасибо

3 ответов


можно использовать QDesktopWidget чтобы определить, сколько экранов вы подключили к компьютеру, а затем получить геометрию каждого экрана:

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

вы также можете проверить, является ли это виртуальный рабочий стол, но это может не иметь значения для ваших пользователей.


вы можете получить количество мониторов и общий размер экрана с QDesktopWidget например.

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);       
}

редактировать 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();
}