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. [SOLVED]How to delete an item from the treeview by droping an item to pushbutton or to an group box
Forum Updated to NodeBB v4.3 + New Features

[SOLVED]How to delete an item from the treeview by droping an item to pushbutton or to an group box

Scheduled Pinned Locked Moved General and Desktop
drag and droptreeview
54 Posts 4 Posters 23.3k Views 3 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.
  • RatzzR Offline
    RatzzR Offline
    Ratzz
    wrote on last edited by Ratzz
    #16

    @mrjj
    I tried this

    #include <QDragMoveEvent>
    #include <QDropEvent>
    protected:
        void dragMoveEvent(QDragMoveEvent *event);
        void dropEvent(QDropEvent *event);
    
    ui->pushButton_DeleteMinorFrame->setAcceptDrops(true);
    
    void Window::dragMoveEvent(QDragMoveEvent *event)
    {
        Window *source =qobject_cast<Window *>(event->source());
        if (source && source != this &&
                (event->answerRect().intersects(ui->pushButton_DeleteMinorFrame->geometry())))
        {
            event->acceptProposedAction();
        }
    }
    
    void Window::dropEvent(QDropEvent *event)
    {
        event->setDropAction(Qt::MoveAction);
        event->accept();
    }
    

    But above does not work for me. Where did i miss??
    Control does not come to these function dragMoveEvent/dropEvent when i drag and drop

    --Alles ist gut.

    1 Reply Last reply
    0
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by mrjj
      #17

      Hi you have to use the Dropbutton also.

      That is why I though using Mainwindow would be easier.

      Best way to do that is to use the promote feature.

      1. save the code in a file called dropbutton.h
        (just to be safe, also create dropbutton.cpp as empty)
      2. right click on your button you want to be a drop button.
        Select "Promote To..."
        In "Promoted classname" type
        DropButton
        (case Matters!)
        in
        header file : type
        dropbutton.h
        Then click "Add" and then Promote.
        Now when you run the program, the normal buttons becomes the DropButton.
      1 Reply Last reply
      0
      • C Offline
        C Offline
        ClapCreative
        wrote on last edited by
        #18

        Thanks mates

        Try us out ClapCreative.com is a professional SEO company Los Angeles offering quality SEO&#x2F;PPC Services. Contact us info@clapcreative.com or +13238632896

        1 Reply Last reply
        0
        • RatzzR Offline
          RatzzR Offline
          Ratzz
          wrote on last edited by
          #19

          @mrjj
          Yes, i Tried you code which turns out to be a Dropbutton. How to implement it in my code ?

          --Alles ist gut.

          mrjjM 1 Reply Last reply
          0
          • RatzzR Ratzz

            @mrjj
            Yes, i Tried you code which turns out to be a Dropbutton. How to implement it in my code ?

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #20

            @Ratzz
            As I wrote in answer ?
            Using the promote feature.
            Which will runtime replace a normal button with the DropButton.
            Or you can new a button you self
            Like
            Dropbutton *but=Dropbutton (this)
            and insert into your window/layout.

            RatzzR 1 Reply Last reply
            0
            • mrjjM mrjj

              @Ratzz
              As I wrote in answer ?
              Using the promote feature.
              Which will runtime replace a normal button with the DropButton.
              Or you can new a button you self
              Like
              Dropbutton *but=Dropbutton (this)
              and insert into your window/layout.

              RatzzR Offline
              RatzzR Offline
              Ratzz
              wrote on last edited by
              #21

              @mrjj
              Yes its working now fine..
              I have group box adjacent to treeview. Can i implement the same to groupbox?

              --Alles ist gut.

              mrjjM 1 Reply Last reply
              0
              • RatzzR Ratzz

                @mrjj
                Yes its working now fine..
                I have group box adjacent to treeview. Can i implement the same to groupbox?

                mrjjM Offline
                mrjjM Offline
                mrjj
                Lifetime Qt Champion
                wrote on last edited by mrjj
                #22

                @Ratzz
                Super.
                Well If you promote the GroupBox, there might be issue with
                Parent. I have never tried it.
                Try it :)
                If it says funny stuff , just demote it to a groupbox again.

                Else its pretty much the same, except new filename and new name.

                #include <QGroupBox>
                #include <QDragMoveEvent>
                
                class DropGroupBox : public QGroupBox {
                  Q_OBJECT
                 public:
                  explicit  DropGroupBox(QWidget* parent = 0) : QGroupBox(parent) {
                    setAcceptDrops(true);
                  }
                 protected:
                  void dragEnterEvent(QDragEnterEvent* event) {
                    event->acceptProposedAction();
                  }
                
                  void dropEvent(QDropEvent* event) {
                    event->setDropAction(Qt::MoveAction);
                    event->accept();
                  }
                };
                
                RatzzR 1 Reply Last reply
                0
                • mrjjM mrjj

                  @Ratzz
                  Super.
                  Well If you promote the GroupBox, there might be issue with
                  Parent. I have never tried it.
                  Try it :)
                  If it says funny stuff , just demote it to a groupbox again.

                  Else its pretty much the same, except new filename and new name.

                  #include <QGroupBox>
                  #include <QDragMoveEvent>
                  
                  class DropGroupBox : public QGroupBox {
                    Q_OBJECT
                   public:
                    explicit  DropGroupBox(QWidget* parent = 0) : QGroupBox(parent) {
                      setAcceptDrops(true);
                    }
                   protected:
                    void dragEnterEvent(QDragEnterEvent* event) {
                      event->acceptProposedAction();
                    }
                  
                    void dropEvent(QDropEvent* event) {
                      event->setDropAction(Qt::MoveAction);
                      event->accept();
                    }
                  };
                  
                  RatzzR Offline
                  RatzzR Offline
                  Ratzz
                  wrote on last edited by Ratzz
                  #23

                  @mrjj
                  i promoted the group using Qpushbutton but not allow me to promote the GroupBox. so i added dropgroupBox.h and promoted it.
                  But its not working.

                  --Alles ist gut.

                  mrjjM 1 Reply Last reply
                  0
                  • RatzzR Ratzz

                    @mrjj
                    i promoted the group using Qpushbutton but not allow me to promote the GroupBox. so i added dropgroupBox.h and promoted it.
                    But its not working.

                    mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #24

                    @Ratzz
                    Hi
                    Something must gone wrong. maybe.
                    Tried it here and it does accept drops

                    https://www.dropbox.com/s/7bkqatzm6vt1kmz/promotedgb.zip?dl=0

                    RatzzR 1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #25

                      Out of curiosity… Why are you creating so many widgets that should allow to delete items from your view using dnd ? It doesn't feel very intuitive nor following the guidelines of major OSs

                      Interested in AI ? www.idiap.ch
                      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                      RatzzR 1 Reply Last reply
                      0
                      • mrjjM mrjj

                        @Ratzz
                        Hi
                        Something must gone wrong. maybe.
                        Tried it here and it does accept drops

                        https://www.dropbox.com/s/7bkqatzm6vt1kmz/promotedgb.zip?dl=0

                        RatzzR Offline
                        RatzzR Offline
                        Ratzz
                        wrote on last edited by Ratzz
                        #26

                        @mrjj
                        Yes your code is working . But do not know in my case its not working .
                        You have used Listwidget and i have used list view . Does it matters??

                        --Alles ist gut.

                        1 Reply Last reply
                        0
                        • SGaistS SGaist

                          Out of curiosity… Why are you creating so many widgets that should allow to delete items from your view using dnd ? It doesn't feel very intuitive nor following the guidelines of major OSs

                          RatzzR Offline
                          RatzzR Offline
                          Ratzz
                          wrote on last edited by
                          #27

                          @SGaist
                          Yes , My treeview is in between listview and groupbox . even if the listview items are dragged to the pushbutton_delete its getting deleted. which in my case should not. what is the best way to do ??

                          --Alles ist gut.

                          1 Reply Last reply
                          0
                          • SGaistS Offline
                            SGaistS Offline
                            SGaist
                            Lifetime Qt Champion
                            wrote on last edited by
                            #28

                            Implement it in one of the usual ways:

                            • React to the delete or backspace key
                            • Have a delete button that will delete the currently selected row/column etc.
                            • Have a dedicated column with e.g. a QPushButton to delete the row completely.

                            Interested in AI ? www.idiap.ch
                            Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                            RatzzR 1 Reply Last reply
                            0
                            • SGaistS SGaist

                              Implement it in one of the usual ways:

                              • React to the delete or backspace key
                              • Have a delete button that will delete the currently selected row/column etc.
                              • Have a dedicated column with e.g. a QPushButton to delete the row completely.
                              RatzzR Offline
                              RatzzR Offline
                              Ratzz
                              wrote on last edited by
                              #29

                              @SGaist
                              I already have a delete button which deletes entire row.

                              --Alles ist gut.

                              RatzzR 1 Reply Last reply
                              0
                              • RatzzR Ratzz

                                @SGaist
                                I already have a delete button which deletes entire row.

                                RatzzR Offline
                                RatzzR Offline
                                Ratzz
                                wrote on last edited by
                                #30

                                @mrjj
                                The code you shared is working (group box).

                                --Alles ist gut.

                                mrjjM 1 Reply Last reply
                                0
                                • RatzzR Ratzz

                                  @mrjj
                                  The code you shared is working (group box).

                                  mrjjM Offline
                                  mrjjM Offline
                                  mrjj
                                  Lifetime Qt Champion
                                  wrote on last edited by
                                  #31

                                  @Ratzz
                                  Ok. super.

                                  RatzzR 1 Reply Last reply
                                  0
                                  • mrjjM mrjj

                                    @Ratzz
                                    Ok. super.

                                    RatzzR Offline
                                    RatzzR Offline
                                    Ratzz
                                    wrote on last edited by
                                    #32

                                    @mrjj
                                    But now i can drag items from treeview as well as listview to pushbutton and groupbox. But i do not want the user to allow listview items to dragged to pushbutton/groupbox

                                    --Alles ist gut.

                                    mrjjM 1 Reply Last reply
                                    0
                                    • RatzzR Ratzz

                                      @mrjj
                                      But now i can drag items from treeview as well as listview to pushbutton and groupbox. But i do not want the user to allow listview items to dragged to pushbutton/groupbox

                                      mrjjM Offline
                                      mrjjM Offline
                                      mrjj
                                      Lifetime Qt Champion
                                      wrote on last edited by
                                      #33

                                      @Ratzz
                                      Hmm maybe you can check with
                                      sender();
                                      in dragEnterEvent
                                      and if its the not a Treeview then reject the drop

                                      like

                                      QTreeView* theone= dynamic_cast<QTreeView*>(sender());
                                         if( theone!= NULL ) 
                                         { 
                                            event->acceptProposedAction();
                                         }
                                      
                                      RatzzR 1 Reply Last reply
                                      0
                                      • mrjjM mrjj

                                        @Ratzz
                                        Hmm maybe you can check with
                                        sender();
                                        in dragEnterEvent
                                        and if its the not a Treeview then reject the drop

                                        like

                                        QTreeView* theone= dynamic_cast<QTreeView*>(sender());
                                           if( theone!= NULL ) 
                                           { 
                                              event->acceptProposedAction();
                                           }
                                        
                                        RatzzR Offline
                                        RatzzR Offline
                                        Ratzz
                                        wrote on last edited by
                                        #34

                                        @mrjj
                                        I do not have dragEnterEvent event yet! . we have a custom event using dropMimeData .

                                        --Alles ist gut.

                                        mrjjM 1 Reply Last reply
                                        0
                                        • RatzzR Ratzz

                                          @mrjj
                                          I do not have dragEnterEvent event yet! . we have a custom event using dropMimeData .

                                          mrjjM Offline
                                          mrjjM Offline
                                          mrjj
                                          Lifetime Qt Champion
                                          wrote on last edited by mrjj
                                          #35

                                          @Ratzz
                                          how does this custom event look like ?

                                          and its not an options just to disable Drag from listview?

                                          RatzzR 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