在Qt / QML中选择全屏显示

时间:2015-08-13 07:46:12

标签: qt ubuntu qml

有一种(更好的多平台)方式如何选择Qt / QML应用程序在全屏显示时应该显示哪个显示器?我可以在Ubuntu上切换主显示〜/ .config / monitors.xml,但是这也会影响其他程序,所以QT更好吗? 感谢。

ApplicationWindow {
  ..
  visible: true
  visibility: "FullScreen"
  ..
}

1 个答案:

答案 0 :(得分:2)

我想纯粹的QML是不可能的。但你可以尝试一些C ++扩展:

class ScreenManager : public QObject
{
    Q_OBJECT
public:
    explicit ScreenManager(QObject *parent = 0);
    Q_INVOKABLE int screenCount() const {
        return QGuiApplication::screens().count();
    }
    Q_INVOKABLE void setScreen(QWindow * window, int screen) {
        if(screen >= 0 && screen < QGuiApplication::screens().count())
            window->setScreen(QGuiApplication::screens().at(screen));
    }
};

您可以将对象公开为QML作为单件或独立项目。

所以在QML中使用它:

ApplicationWindow {
    id: mainWindow
    visible: true

    Component.onCompleted: {
        console.log(screenManager.screenCount());
        screenManager.setScreen(mainWindow,1); // for a second screen
    }

    ScreenManager {
        id: screenManager
    }
}

但是目前我必须使用更多1个屏幕的计算机,所以我没有测试代码。