2015-10-04 53 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 

,并就目前看来,它工作正常。