我想將一個陣列uint32_t作為一個屬性傳遞給 QMLuint32_t*
Q_PROPERTY(uint32_t *Data READ Data WRITE setData NOTIFY DataChanged)
但我有一個錯誤
QMetaProperty::read: Unable to handle unregistered datatype 'uint32_t*' for property 'mpk::mssc::gui::HistogramController::histogramData'
如何uint32_t*使用 Q_PROPERTY 傳遞給 QML 代碼?
uj5u.com熱心網友回復:
我認為您不能在 QML 中使用 C 陣列。您可以做的是從該陣列創建一個 QList 并將其像屬性一樣公開。在這種情況下,您將能夠將其視為 JS 陣列。
Q_PROPERTY(QList<unsigned int> data READ data WRITE setData NOTIFY dataChanged)
另請注意,您將無法收到有關元素更改或 QList 本身更改的通知。要獲得通知并用于系結,您必須重置整個 QList。
另一種選擇是使用適當的可呼叫方法包裝您的陣列:
Q_INVOKABLE unsigned int getElement(int i)
Q_INVOKABLE void setElement(int i, unsigned int val)
Q_INVOKABLE void appendElement(unsigned int val)
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/513282.html
標籤:qtqml
下一篇:Qt平臺DLLqwindows.dll在使用CMake和vcpkg在VisualStudio中構建時未復制到平臺目錄
