Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Drop on QTableView creates new columns
Forum Updated to NodeBB v4.3 + New Features

Drop on QTableView creates new columns

Scheduled Pinned Locked Moved General and Desktop
1 Posts 1 Posters 499 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    torkelh
    wrote on last edited by
    #1

    I have two QTableViews in a dialog. One table view contains "available items", and the other contains "selected items". Both QTableViews have three columns, and each table view is connected to its own QStandardItemModel.

    Dropping a row from "available items" to "selected items" works fine, as long as I drop the row at the first column. But if I drop the row at the second or third column (between two rows that has already been selected by drag & drop), new columns are created. The text is inserted from the second or third column onwards.

    Is it possible to prevent this from happening? A row that is dropped on "selected items" shall always be inserted from the first column.

    @
    Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
    {
    ui->setupUi(this);

    QStandardItemModel* availableModel_ = new QStandardItemModel();
    availableModel_->setHorizontalHeaderItem(0, new QStandardItem("First"));
    availableModel_->setHorizontalHeaderItem(1, new QStandardItem("Second"));
    availableModel_->setHorizontalHeaderItem(2, new QStandardItem("Third"));
    
    ui->tvAvailable->setModel(availableModel_);
    ui->tvAvailable->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui->tvAvailable->setSelectionMode(QAbstractItemView::ExtendedSelection);
    ui->tvAvailable->verticalHeader()->setVisible(false);
    ui->tvAvailable->setEditTriggers(QAbstractItemView::NoEditTriggers);
    
    ui->tvAvailable->setDragEnabled(true);
    ui->tvAvailable->setDragDropOverwriteMode(false);
    ui->tvAvailable->setDefaultDropAction(Qt::MoveAction);
    
    QStandardItemModel* selectedModel_ = new QStandardItemModel();
    selectedModel_->setHorizontalHeaderItem(0, new QStandardItem("First"));
    selectedModel_->setHorizontalHeaderItem(1, new QStandardItem("Second"));
    selectedModel_->setHorizontalHeaderItem(2, new QStandardItem("Third"));
    
    ui->tvSelected->setModel(selectedModel_);
    ui->tvSelected->setSelectionBehavior(QAbstractItemView::SelectRows);
    ui->tvSelected->setSelectionMode(QAbstractItemView::NoSelection);
    ui->tvSelected->verticalHeader()->setVisible(false);
    ui->tvSelected->setEditTriggers(QAbstractItemView::NoEditTriggers);
    
    ui->tvSelected->setAcceptDrops(true);
    ui->tvSelected->setDropIndicatorShown(true);
    
    int row = 0;
    int col = 0;
    availableModel_->insertRows(0, 4);
    availableModel_->setData(availableModel_->index(row, col), QString("Row 1"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), QString("The first row"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), 1);
    availableModel_->item(row,col++)->setDropEnabled(false);
    
    row++;
    col = 0;
    availableModel_->setData(availableModel_->index(row, col), QString("Row 2"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), QString("The second row"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), 2);
    availableModel_->item(row,col++)->setDropEnabled(false);
    
    row++;
    col = 0;
    availableModel_->setData(availableModel_->index(row, col), QString("Row 3"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), QString("The third row"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), 3);
    availableModel_->item(row,col++)->setDropEnabled(false);
    
    row++;
    col = 0;
    availableModel_->setData(availableModel_->index(row, col), QString("Row 4"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), QString("The fourth row"));
    availableModel_->item(row,col++)->setDropEnabled(false);
    availableModel_->setData(availableModel_->index(row, col), 4);
    availableModel_->item(row,col++)->setDropEnabled(false);
    

    }
    @

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved