簡體   English   中英

我可以將矩形連接到C ++模型嗎?

[英]Can I connect rectangle to C++ model?

我已經將QML的ListView連接到我的C ++模型,並且在模型更改時更新,這很酷。 但是我不想在ListView bur中顯示數據,而是以自定義方式在矩形中顯示(理想情況下是不存在的純視圖)。

我該怎么辦?

我顯然看到的問題是rectangle不是視圖,並且還有其他允許自定義繪圖的純視圖。 周圍有辦法嗎?

添加在

在回答問題和評論之后,讓我說明為什么這樣做。 我有各種各樣的信息,如果使用列表,則必須在一個屏幕上看起來不太好使用多個列表。 我要實現的就是所謂的“文檔視圖”。 頁眉位於此處,標題位於此處,數據位於此處,頁腳位於此處。 它是模型數據的自定義表示。

@Folibis,我喜歡你的第一點。 好像要執行以下操作:

Rectangle 
{
   Text { text: mySingleton.getFruitName() }
   Text { text: mySingleton.getFruitPrice() }
}

注意:我故意不添加錨點或幾何形狀來關注我的問題,但假設價格出現在水果名稱旁邊。

這是否意味着如果我在模型中更新完全相同對象的水果名稱或價格,而在GUI中其他位置,則以上內容會自動更新?

您有幾種實現自定義圖形的方法。 我真的無法想象可以向Rectangle提供什么數據,但是無論如何:

  1. 您可以在C ++中創建自定義項,例如單例從中獲取所需數據。
Rectangle {
    width: mySingleton.getWidth();
    height: mySingleton.getHeight();
    color: mySingleton.getColor();
}
  1. 您可以創建派生自QQuickPaintedItem自定義元素。 您只需要重新實現QQuickPaintedItem::​paint(QPainter * painter)即可繪制自己的矩形。 這是創建ow元素的最簡單方法,但效率不高,因為它使用QPainter

  2. QQuickItem創建自定義元素QQuickItem 您將需要重新實現QSGNode * QQuickItem::​updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) 這是一種快速可靠的方法,但是需要OpenGL經驗。

  3. 也如(1),但在Canvas元素上繪畫

暫無
暫無

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

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