编辑:26.08.2014 08:20 - 完全重写的问题!
我想做的是:
我有两个cpp-Classes:
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的对话框。
答案 0 :(得分:0)
我想通了,我不能在我的主应用程序中编写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
}
}