私はListViewをcppから渡された値でバインドしています。Signal emit問題 - Listviewがフルリストを表示していません
問題:リストビューは1行だけを表示し、最初の値を意味します。残りの行は表示されません。
チェック: 私はテストとしてmain.qmlでのListModel/ListElementを作成し、リストビューと結合し、今、リストビューがうまく働いて、信号を発した後、私は疑うすべての値
を表示し、エラーが発生します。
コードスニペット:
main.qml
ListView {
id: idListView
anchors {
left: parent.left
leftMargin: 10 * scaleFactor
right: parent.right
rightMargin: 10 * scaleFactor
top: rectangleToolBar.bottom
topMargin: 10 * scaleFactor
bottom: rectangleStatusBar.top
bottomMargin: 10 * scaleFactor
}
// model: objHomeController.detailsModel // Display only one row
//model: idListmodel //Working fine
delegate: comsearchDelegate
spacing: 10 * scaleFactor
clip: true
highlight: Rectangle {
color: 'grey'
Text {
anchors.centerIn: parent
color: 'white'
}
}
focus: true
}
Component {
id: comsearchDelegate
Row {
spacing: 10 * scaleFactor
Column {
Layout.alignment: Qt.AlignTop
Text { text: title; font { pixelSize: 14 * scaleFactor; bold: true } }
Text { text: description; font { pixelSize: 14 * scaleFactor; bold: true } }
}
}
}
ListModel {
id: idListModel
ListElement{
title : "sdfsdf";
description:"sdfsdfs";
}
ListElement {
title : "sdfsdf";
description:"sdfsdfs";
}
ListElement {
title : "sdfsdf";
description:"sdfsdfs";
}
ListElement {
title : "sdfsdf";
description:"sdfsdfs";
}
}
HomeController.h
Q_PROPERTY(Model* detailsModel READ get_detailsModel WRITE set_detailsModel NOTIFY detailsModelChanged)
HomeController.cpp
void HomeController::set_detailsModel(Model* value)
{
m_detailsModel = value;
//value has correct values - checked.
emit detailsModelChanged(value);
}
Model* HomeController::get_detailsModel(void)
{
return m_detailsModel;
}
void HomeController::getAllData()
{
m_detailsModel->clear();
m_detailsModel->updateModel(eveReadXML());
set_detailsModel(m_detailsModel);
}
Model.cpp
void Model::updateModel(const QList<Details> & details)
{
if(this->rowCount() > 0) {
this->clear();
}
beginInsertRows(QModelIndex(),rowCount(),rowCount());
m_modelData.append(details);
endInsertRows();
}
私は.NETのバックグラウンドから来たので、ListView/GridViewをDataTableまたはXMLにバインドすることを理解したいと思います。ここでは、Details [Details.h]という名前のCreatedクラスを作成し、Model.h/Model.cppを作成し、そこから値を取得してListViewにバインドしました。私は正しいことをしていますか、それとも他の流れがありますか?任意のチュートリアル/ Codesnippet /プロジェクトのリンクが高く評価されています。 C++からのListModelを定義するには
シグナルと関係があるという結論にどのように到達しましたか? あなたの説明からわかるように、それはうまくいきます。そうでなければ、ビューは完全に空になります。 私の推測では、あなたのモデルが正しく動作していないと思います。実際にテストしましたか? –
'get_detailsModel()'の定義を表示できますか? –
親愛なるAnshさん、上記のコードをフローとして投稿しました。 –