मेरे पास एक QListView _listView है जिसका मॉडल QStringListModel _model है, जिसका QStringList _locations है। यहाँ कोड है:

_locations << "Sarajevo" << "Tesanj" << "Graz";

_model = new QStringListModel(this);
_model->setStringList(_locations);

_listView = new QListView(this);
_listView->setModel(_model);
_listView->setEditTriggers(
      QAbstractItemView::EditTrigger::DoubleClicked |
      QAbstractItemView::EditTrigger::AnyKeyPressed);

और वे स्लॉट जो _listView को संपादित करते हैं:

void Dialog_EditLocations::onKey_del()
{
    QModelIndex _index;
    _index = _listView->currentIndex();
    _model->removeRow(_index.row());
}

void Dialog_EditLocations::onClick_add()
{
    if (_edAddLocation->text() == "") return;
    int row = _model->rowCount();
    _model->insertRow(row);
    QModelIndex _index;
    _index = _model->index(row);
    _model->setData(_index, _edAddLocation->text());
    _edAddLocation->clear();    
}

सूची दृश्य विजेट में सूची संपादित करने के बाद, मैं इसे एक फ़ाइल में संग्रहीत करना चाहता हूं। जब मैं _locations संग्रहीत करता हूं तो यह मूल सूची को कोड की पहली पंक्ति से सहेजता है, भले ही मैंने नए आइटम जोड़े।

जब भी मैं _listView में कोई नई प्रविष्टि करता हूं, या कम से कम _listView में दिखाई देने वाली सूची को कैसे लाया जाए, तो कोड को _locations को कैसे अपडेट किया जाए?

0
iamalminko 27 अक्टूबर 2018, 16:44

1 उत्तर

सबसे बढ़िया उत्तर

QStringListModel::stringList() का उपयोग करें, यह मॉडल से सभी मौजूदा आइटम लौटाता है, जो कि आप सूचीदृश्य विजेट में देखते हैं, जिसमें कोई भी संशोधन (पंक्तियों को जोड़ना, हटाना) शामिल है।

onClick_add स्लॉट के अंत में आप जोड़ सकते हैं:

_locations = _model->stringList();
1
rafix07 27 अक्टूबर 2018, 14:41