簡體   English   中英

Qt-通過xml配置接口

[英]Qt - Configuring interface through xml

我有一個本地xml文件告訴我:

  • 我的界面必須有多少個“滑動”頁面
  • 對於任何頁面,有多少行
  • 對於任何行,有多少列(任何列將包含標簽和值,這取決於您在節點之間找到的屬性)

這是一個模板:

 <?xml version="1.0" encoding="utf-8"?>
 <parameters version="2.0">
      <page pageNum = "2">
           <row colNum = "1">
                <column>
                     <id>00001</id>
                     <name>parameterName</name>
                     <type>parameterType</type>
                     <value>parameterValue</value>
                     <min>0</min>
                     <max>100</max>
                     <step>1</step>
                </column>
           </row>
           <row colNum = "2">
                <column>
                     <id>00002</id>
                     <name>parameterName</name>
                     <type>parameterType</type>
                     <value>parameterValue</value>
                     <min>0</min>
                     <max>100</max>
                     <step>1</step>
                </column>
                <column>
                     <id>00003</id>
                     <name>parameterName</name>
                     <type>parameterType</type>
                     <value>parameterValue</value>
                     <min>0</min>
                     <max>100</max>
                     <step>1</step>
                </column>
           </row>
      </page>
      <page>
           <!-- ... etc ... -->
      </page>
 </parameters>

經過研究,我在某些論壇中發現XmlListModel不適合。 考慮到我在Qt工作,該怎么辦?

在這里https://lists.launchpad.net/ubuntu-phone/msg12284.html我發現了一些有趣的東西,但是在讀取xml文件時使用的是XMLHttpRequest,我不能使用,因為我的xml文件只是本地的!

有人能幫我嗎?

非常感謝!

盡管幾乎可以肯定地使用XmlListModel完成此操作(請參閱問題注釋),但這將非常浪費,因為模型的每個實例都需要執行所有的解析和查詢。

一個XmlListModel將提供多少個頁面的輸入

XmlListModel {
    query: "/parameters/page"
}

然后,每個頁面都會有一個模型來提取該頁面的行(未測試查詢)

XmlListModel {
    // pageNum is a property set on each page, e.g. via the model.index of the Repeater generating the pages
    query: "/parameters/page[@pageNum=" + pageNum + "]/row"

    XmlRole { name: "id"; query: "column/id/string()" }
    // ... and so on
}

但是,我認為最好的方法是創建一個自定義的QAbstractListModel子類,該子類可以表示單個頁面的行。

然后,具有該類型的list屬性的對象可以用作頁面的模型,每個頁面都使用其“行模型”。

解析僅完成一次,例如使用QXmlStreamReader來構建“行模型”列表並獲取每個模型的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM