I did everything, thanks to Shadasviar for the idea.
1) With drag / drop
mainwindow.h
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); public slots: void check(); private: QList<QString> list; Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); list << "test1" << "test2" << "test3"; ui->listWidget->addItems(list); ui->listWidget->setDragDropMode(QAbstractItemView::InternalMove); connect(ui->pushButton, SIGNAL(clicked(bool)), this, SLOT(check())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::check() { for(int i = 0; i < list.count(); i++) { list[i] = ui->listWidget->item(i)->text(); qDebug() << list[i]; } }
2) Via up / down buttons
#ifndef CHOICEREPORTING_H #define CHOICEREPORTING_H #include <QDialog> #include <QListWidgetItem> namespace Ui { class ChoiceReporting; } class ChoiceReporting : public QDialog { Q_OBJECT public: explicit ChoiceReporting(QWidget *parent = 0); ~ChoiceReporting(); Ui::ChoiceReporting *ui; public slots: void upList(); void downList(); private: QList<QString> lst; };
mainwindow.cpp
#include "choicereporting.h" #include "ui_choicereporting.h" #include <QDebug> ChoiceReporting::ChoiceReporting(QWidget *parent) : QDialog(parent), ui(new Ui::ChoiceReporting) { ui->setupUi(this); lst << "test1" << "test2" << "test3"; ui->listWidget->addItems(lst); connect(this->ui->pushButton_Up, SIGNAL(clicked()), this, SLOT(upList())); connect(this->ui->pushButton_Down, SIGNAL(clicked()), this, SLOT(downList())); } ChoiceReporting::~ChoiceReporting() { delete ui; } void ChoiceReporting::upList() { int currRow = ui->listWidget_Choice->currentRow(); if(currRow >0 ) { int upRow = currRow - 1; QListWidgetItem tmp = *(ui->listWidget_Choice->currentItem()); *(ui->listWidget_Choice->item(currRow)) = *(ui->listWidget_Choice->item(upRow)); *(ui->listWidget_Choice->item(upRow)) = tmp; lst.swap(upRow, currRow); ui->listWidget_Choice->setCurrentItem(ui->listWidget_Choice->item(upRow)); } } void ChoiceReporting::downList() { int currRow = ui->listWidget_Choice->currentRow(); if(currRow < lst.count() - 1) { int downRow = currRow + 1; QListWidgetItem tmp = *(ui->listWidget_Choice->currentItem()); *(ui->listWidget_Choice->item(currRow)) = *(ui->listWidget_Choice->item(downRow)); *(ui->listWidget_Choice->item(downRow)) = tmp; lst.swap(currRow, downRow); ui->listWidget_Choice->setCurrentItem(ui->listWidget_Choice->item(downRow)); } }