[英]Inserting/Deleting Items in a drag&drop QML listView with cpp model
[英]QML-Listview (Cpp-Model) Details-Dialog
編輯:26.08.2014 08:20-完全重做的問題!
我想做的是:
我有兩個cpp類:
DataModel.cpp:
QVariant DataModel::data(const QModelIndex &index, int role) const
{
DataModelItem *item = m_itemList.at(index.row());
switch (role) {
case ListDataRole:
return QString().sprintf("%.2f", item->listData());
break;
case DetailsDataRole:
return QString().sprintf("%.4f", item->detailsData());
break;
default:
qDebug () << "role not handled";
}
return QVariant();
}
我現在想做的是在ListView中顯示listData。 當我單擊一個ListItem時,將出現一個對話框,其中包含detailsData。
我發現,我不能在主應用程序中編寫model.detailsData,但只能使用detailsData(我也嘗試過listview.model.detailsData無效)。 可能有人知道為什么這行不通。
無論如何,我找到了解決方案。
這是工作示例:
main.qml
import QtQuick 1.1
Rectangle {
width: 200
height: 400
ListView {
id: listView
model: dataModel
delegate: listDelegate
}
Component {
id: listDelegate
Item {
id: delegateItem
width: listDataText.width
height: listDataText.height
Text {
id: listDataText
text: listData
}
MouseArea {
anchors.fill: parent
onClicked: {
console.log(detailsData)
itemDetails.details = model.detailsData
itemDetails.visible = true
}
}
}
}
DetailsDialog {
id: itemDetails
visible: false
anchors.centerIn: parent
}
}
DetailsDialog.qml
import QtQuick 1.1
Rectangle {
property alias details: detailsText.text
width: 100
height: 62
Text {
id: detailsText
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.