QML中ListView的C 模型(二)

2021-09-25 08:39:38 字數 2823 閱讀 2195

qt:

:itemflags flags

(const qmodelindex &index)

const override;

bool setdata

(const qmodelindex &index,

const qvariant &value,

int role) override;

在stringlistmodel.cpp中新增:

qt:

:itemflags mystringlistmodel:

:flags

(const qmodelindex &index)

const

bool mystringlistmodel:

:setdata

(const qmodelindex &index,

const qvariant &value,

int role)

return false;

}

這裡還是貼出全部**:

stringlistmodel.h

#ifndef stringlistmodel_h

#define stringlistmodel_h

#include

#include

class mystringlistmodel : public qabstractlistmodel

; explicit mystringlistmodel

(qobject *parent = nullptr)

;int

rowcount

(const qmodelindex &parent =

qmodelindex()

)const override;

qvariant data

(const qmodelindex &index,

int role = descriptionrole)

const override;

virtual qhash<

int, qbytearray>

rolenames()

const override;

qt::itemflags flags

(const qmodelindex &index)

const override;

bool setdata

(const qmodelindex &index,

const qvariant &value,

int role) override;

private:

qstringlist stringlist;};

#endif

// stringlistmodel_h

stringlistmodel.cpp檔案:

#include

"stringlistmodel.h"

mystringlistmodel:

:mystringlistmodel

(qobject *parent)

int mystringlistmodel:

:rowcount

(const qmodelindex &

)const

qvariant mystringlistmodel:

:data

(const qmodelindex &index,

int role)

const

qhash<

int, qbytearray> mystringlistmodel:

:rolenames()

const

qt::itemflags mystringlistmodel:

:flags

(const qmodelindex &index)

const

bool mystringlistmodel:

:setdata

(const qmodelindex &index,

const qvariant &value,

int role)

return false;

}

main.cpp檔案:

#include

#include

#include

"stringlistmodel.h"

intmain

(int argc,

char

*ar**)

main.qml檔案:

import qtquick 2.9

import qtquick.window 2.2

import regstringlistmodel 1.0

import qtquick.layouts 1.3

import qtquick.controls 2.0

window

delegate: rowlayout

layout.fillwidth : true

}}}}}

執行效果:

在console.log的輸出中可以看到model的資料是有改變的。

qml中嵌入c 物件

main.cpp 設定qml屬性和視窗屬性 include include include include int main int argc,char argv include include include class qobject 可以使用q invokable的public函式或者publ...

C 和QML混合程式設計 下 C 中呼叫QML

c 中呼叫qml,主要通過呼叫qml物件成員,方法以及與qml訊號關聯 item 為了能夠在c 中訪問qml定義的成員變數somevalue,可以使用qqmlproperty的read 和write qobject setproperty 和qobject property 在main.cpp中 q...

QML中的布局管理

qml中的布局管理 1 定位器 column,row,grid,flow1 columncolumn項用來垂直排列專案並使它們不會重疊。import qtquick2.3columnrectanglerectangle 2 rowrow項用來水平排列專案並使他們不會重疊。3 gridgrid項用來定...