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. How to get called dropEvent() ?
Forum Updated to NodeBB v4.3 + New Features

How to get called dropEvent() ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
1 Posts 1 Posters 125 Views
  • 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.
  • Y Offline
    Y Offline
    Yunuscinar41
    wrote on last edited by
    #1

    I found a toDoList project about drag&drop. And I wonder Can I get the item that dragging or dropped. I'm reading the documentation for 2 days. I implement the methods.

    protected:
        void dragEnterEvent( QDragEnterEvent *anEvent ) override;
        void dragMoveEvent( QDragMoveEvent *anEvent ) override;
        void dragLeaveEvent( QDragLeaveEvent *anEvent ) override;
        void dropEvent( QDropEvent *anEvent ) override;
    

    There are 2 listviews and toolbar. I add add and remove to the toolbar.
    I can drag or drop but, I can't get text of the the items dragging. This is the main code.
    And I really wonder, we override the methods right. But we do not connect the methods to something. How does the method works ?

    todolist::todolist(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::todolist)
    {
        QWidget* pWidget = new QWidget(this);
            pWidget->setStyleSheet("background-color: #ECF0F1");
            setCentralWidget(pWidget);
    
            QVBoxLayout* pMainLayout = new QVBoxLayout();
            pWidget->setLayout(pMainLayout);
    
            QLabel* pwTitle = new QLabel("To Do List", this);
            pMainLayout->addWidget(pwTitle);
            pwTitle->setAlignment(Qt::AlignCenter);
            pwTitle->setStyleSheet("font-size: 30pt; margin: 10%;");
    
            QHBoxLayout* pHLayoutLabels = new QHBoxLayout();
            pMainLayout->addLayout(pHLayoutLabels);
    
            QLabel* plblPending = new QLabel("Pending", this);
            plblPending->setStyleSheet("font-size: 15pt;");
            pHLayoutLabels->addWidget(plblPending);
    
            QLabel* plblCompleted = new QLabel("Completed", this);
            plblCompleted->setStyleSheet("font-size: 15pt;");
            pHLayoutLabels->addWidget(plblCompleted);
    
            QHBoxLayout* pHLayout = new QHBoxLayout();
            pMainLayout->addLayout(pHLayout);
    
            m_pwPending = new QListView(this);
            m_pwPending->setDragEnabled(true);
            m_pwPending->setAcceptDrops(true);
            m_pwPending->setDropIndicatorShown(true);
            m_pwPending->setDefaultDropAction(Qt::MoveAction);
            pHLayout->addWidget(m_pwPending);
    
            m_pwCompleted = new QListView(this);
            m_pwCompleted->setDragEnabled(true);
            m_pwCompleted->setAcceptDrops(true);
            m_pwCompleted->setDropIndicatorShown(true);
            m_pwCompleted->setDefaultDropAction(Qt::MoveAction);
            pHLayout->addWidget(m_pwCompleted);
    
            m_pwPending->setModel(new QStringListModel());
            m_pwCompleted->setModel(new QStringListModel());
    
            m_pwPending->setStyleSheet
            ("QListView { font-size: 20pt; font-weight: bold; }"
             "QListView::item { background-color: #E74C3C; padding: 10%;"
             "border: 1px solid #C0392B; }"
             "QListView::item::hover { background-color: #C0392B }");
    
            m_pwCompleted->setStyleSheet
            ("QListView { font-size: 20pt; font-weight: bold; }"
             "QListView::item { background-color: #2ECC71; padding: 10%;"
             "border: 1px solid #27AE60; }"
             "QListView::item::hover { background-color: #27AE60 }");
    
    
            QToolBar* pToolBar = new QToolBar(this);
            addToolBar(pToolBar);
    
            m_pActAdd = new QAction(this);
                m_pActAdd->setIcon(QIcon(":/resources/add.png"));
                connect(m_pActAdd, &QAction::triggered, this, &todolist::onAdd);
    
                m_pActRemove = new QAction(this);
                m_pActRemove->setIcon(QIcon(":/resources/remove.png"));
                connect(m_pActRemove, &QAction::triggered, this, &todolist::onRemove);
    
            pToolBar->addAction(m_pActAdd);
            pToolBar->addAction(m_pActRemove);
    
            setAcceptDrops(true);
    }
    
    void todolist::onAdd()
    {
        m_pwPending->model()->insertRow(m_pwPending->model()->rowCount());
        QModelIndex oIndex = m_pwPending->model()->index(
        m_pwPending->model()->rowCount() - 1, 0);
    
        m_pwPending->edit(oIndex);
    
    }
    
    void todolist::onRemove()
    {
        QModelIndex oIndex = m_pwPending->currentIndex();
        m_pwPending->model()->removeRow(oIndex.row());
    }
    void todolist::dropEvent(QDropEvent* event) {
        const QMimeData* mimeData = event->mimeData();
        QString temp;
        if(mimeData->hasText()) {
            temp = mimeData->text();
        }
    
        QMessageBox::information(this,"x",temp);
    }
    
    void todolist::dragEnterEvent(QDragEnterEvent *anEvent)
    {
        anEvent->setAccepted(true);
    }
    
    void todolist::dragMoveEvent(QDragMoveEvent *anEvent)
    {
    
    }
    
    void todolist::dragLeaveEvent(QDragLeaveEvent *anEvent)
    {
    
    }
    todolist::~todolist()
    {
        delete ui;
    }
    
    
    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