list settings can be reordered now

This commit is contained in:
fourtf
2020-02-20 23:16:46 +01:00
parent 78532a01ec
commit d6c3c99605
2 changed files with 79 additions and 9 deletions
+16 -8
View File
@@ -15,9 +15,12 @@ EditableModelView::EditableModelView(QAbstractTableModel *model)
{
this->model_->setParent(this);
this->tableView_->setModel(model);
this->tableView_->setSelectionMode(QAbstractItemView::ExtendedSelection);
this->tableView_->setSelectionMode(QAbstractItemView::SingleSelection);
this->tableView_->setSelectionBehavior(QAbstractItemView::SelectRows);
this->tableView_->verticalHeader()->hide();
this->tableView_->setDragDropMode(QTableView::DragDropMode::InternalMove);
this->tableView_->setDragDropOverwriteMode(false);
this->tableView_->setDefaultDropAction(Qt::DropAction::MoveAction);
this->tableView_->verticalHeader()->setVisible(false);
// create layout
QVBoxLayout *vbox = new QVBoxLayout(this);
@@ -38,12 +41,17 @@ EditableModelView::EditableModelView(QAbstractTableModel *model)
QPushButton *remove = new QPushButton("Remove");
buttons->addWidget(remove);
QObject::connect(remove, &QPushButton::clicked, [this] {
QModelIndexList list;
while ((list = this->getTableView()->selectionModel()->selectedRows(0))
.length() > 0)
{
model_->removeRow(list[0].row());
}
auto selected = this->getTableView()->selectionModel()->selectedRows(0);
// Remove rows backwards so indices don't shift.
std::vector<int> rows;
for (auto &&index : selected)
rows.push_back(index.row());
std::sort(rows.begin(), rows.end(), std::greater{});
for (auto &&row : rows)
model_->removeRow(row);
});
buttons->addStretch();