2015-08-13 79 views
1

是否有一種(更好的多平臺)方式來選擇Qt/QML應用在全屏顯示時應該顯示哪個顯示器?我可以在Ubuntu上切換主顯示器〜/ .config/monitors.xml,但這也會影響其他程序,所以QT中有更好的東西? 謝謝。在Qt/QML中選擇全屏顯示

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

可見性不是字符串屬性。你的情況必須是'Window.FullScreen'。 – folibis

+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個屏幕,所以我沒有測試的代碼。

+0

在Ubuntu 14.04上,screenManager.screenCount()返回2,並且window-> screen() - > name()在切換後返回右邊的顯示,但應用始終保持在屏幕0。 –