Edytowanie elementu QStringList

0

Witam, mam następujący problem. Posługuję się QListView i QStringList. Nie potrafię zrobić tak, aby gdy kliknę dwukrotnie na jakiś element QListView zmienił się odpowiadający mu element QStringList.

Fragment kodu:

QStringList list1;
QStringListModel *model1;


model1 = new QStringListModel(this);
model1->setStringList(list1);
ui->listView1->setModel(model1);
ui->listView1->setEditTriggers(QAbstractItemView::DoubleClicked);
 

Napisałem do tego slot :

void AnswersMainWindow::editlist1(int row) {

    QModelIndex indx = model1->index(row);
    QString line = indx.data().toString();

    list1[row] = line;




}

i połączyłem to connectem:

connect(ui->listView1, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editlist1(int))); 

Kod się kompiluje, lecz funkcjonalność nie działa. Mógłby ktoś pomóc?

1

może tak?

class ListView : public QListView
{
        Q_OBJECT
    public:
        explicit ListView(QWidget *parent = 0);
        
    private:
        QStringListModel model;
        QStringList list;

    private slots:
        void _slModified();
        
};
ListView::ListView(QWidget *parent) :
    QListView(parent)
{
    list << "test1" << "test2" << "test3";

    qDebug() << "przed: " << list;
    model.setStringList(list);

    setModel(&model);

    connect(&model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
            this, SLOT(_slModified()));
}

void ListView::_slModified()
{
    model.stringList().swap(list);
    qDebug() << "zmieniono: " << list;
    //albo clear i append chociaż preferowałbym swapa
}
0

dziękuję bardzo, teraz wszystko gra ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1