Запустить программу на втором мониторе (Qt framework) - PullRequest
6 голосов
/ 06 октября 2010

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

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

Спасибо

Ответы [ 3 ]

13 голосов
/ 06 октября 2010

Вы можете получить количество мониторов и общий размер экрана с помощью 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);       
}
8 голосов
/ 06 октября 2010

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

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

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

1 голос
/ 18 июля 2017

Редактировать 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...