2015-10-04 35 views
0

我有QML ApplicationWindow命名爲ueWindowMain並在main.qml中聲明。它裏面有QML StatusBar命名ueStatusBar有兩個圖標,命名爲ueStatusIndicatorDatabaseConnectedueStatusIndicatorBluetoothPrinterConnected,表現出一些州和一個可檢查的QML Button,命名ueStaffSelector以編程方式獲取物體座標

import QtQuick 2.4 
import QtQuick.Controls 1.3 
import QtQuick.Window 2.2 
import QtQuick.Dialogs 1.2 
import QtQuick.Layouts 1.0 
import QtQuick.Controls.Styles 1.4 

import si.mikroelektronika 1.0 

import "gui/items" 

ApplicationWindow 
{ 
    id: ueWindowMain 

    title: qsTr("uBlagajna Mobile Client ver 0 revision 101") 

    width: Screen.desktopAvailableWidth 
    height: Screen.desktopAvailableWidth 

    visible: true 

    opacity: 1.0 

    contentOrientation: Qt.LandscapeOrientation 

    color: "black" 

    statusBar: StatusBar 
    { 
     id: ueStatusBar 

     height: 96 

     clip: true 

     antialiasing: true 

     style: StatusBarStyle 
     { 
      background: Rectanglstrong texte 
      { 
       width: parent.width 
       height: parent.height 

       color: "#303030" 
      } // background 
     } // style 

     RowLayout 
     { 
      spacing: 8 

      UeDatabaseStatusIndicator 
      { 
       id: ueStatusIndicatorDatabaseConnected 

       Layout.minimumWidth: 96 
       Layout.preferredWidth: 96 
       Layout.maximumWidth: 96 
       Layout.fillHeight: true 

       ueParamImageStatusOn: "qrc:///ueIcons/icons/ueDbConnectionOk.png" 
       ueParamImageStatusOff: "qrc:///ueIcons/icons/ueDbConnectionError.png" 
      } // ueStatusIndicatorDatabaseConnected 

      UeBluetoothStatusIndicator 
      { 
       id: ueStatusIndicatorBluetoothPrinterConnected 

       Layout.minimumWidth: 96 
       Layout.preferredWidth: 96 
       Layout.maximumWidth: 96 
       Layout.fillHeight: true 

       ueParamImageStatusOn: "qrc:///ueIcons/icons/ueBtConnectionOk.png" 
       ueParamImageStatusOff: "qrc:///ueIcons/icons/ueBtConnectionError.png" 
      } // ueStatusIndicatorBluetoothPrinterConnected 

      UeStaffSelector 
      { 
       id: ueStaffSelector 

       Layout.minimumWidth: 96 
       Layout.preferredWidth: 96 
       Layout.maximumWidth: 96 
       Layout.fillHeight: true 
      } // ueStaffSelector 
     } // RowLayout 
    } // ueStatusBar 
} // ueWindowMain 

現在,裏面StatusBar這三個項目使用RowLayout定位。我如何在QML代碼中計算它們的座標,即以編程方式?

+1

你是否在搜索座標w.r.t.父容器/主窗口?如果是這種情況,請看[這個答案](http://stackoverflow.com/a/28415588/2538363)。 – BaCaRoZzo

+0

@BaCaRoZzo不,我正在'StatusBar'的'RowLayout'內搜索項目的座標。 – KernelPanic

+0

你仍然可以使用這些功能,看看答案。 – BaCaRoZzo

回答

0

我已經成功與下面的代碼塊來解決問題:

x: ueStatusIndicatorDatabaseConnected.width+ 
    ueStatusIndicatorBluetoothPrinterConnected.width+2*ueStatusBarLayout.spacing 
y: ueWindowMain.height-ueStatusBar.height-ueStaffView.height 

,並就目前看來,它工作正常。