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. get mousePressEvent in qlistview
Forum Updated to NodeBB v4.3 + New Features

get mousePressEvent in qlistview

Scheduled Pinned Locked Moved Solved General and Desktop
19 Posts 4 Posters 4.0k 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.
  • S Offline
    S Offline
    saber
    wrote on last edited by
    #1

    i want get the mouse pressed in blank space , where there is no item.

    my code is

    // in constructor 
    ui->viewtree->installEventFilter(this);
    
    
    void corefm::mousePressEvent(QMouseEvent *event)
    {
        qDebug() << "Mounting " ;
    
    }
    
    

    problem is i am not getting anything. what i am doing wrorng.
    note. i used a custom model to set the list item.

    here is my project COREBOX

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

      @saber

      Did you check this post ?

      --Alles ist gut.

      S 1 Reply Last reply
      0
      • RatzzR Ratzz

        @saber

        Did you check this post ?

        S Offline
        S Offline
        saber
        wrote on last edited by
        #3

        @Ratzz it is qlist in icon view.

        i need if mouse clicked in where there is no item.

        mrjjM 1 Reply Last reply
        0
        • S saber

          @Ratzz it is qlist in icon view.

          i need if mouse clicked in where there is no item.

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

          @saber
          Hi
          you have to set eventfiler on its viewport class.

          S 1 Reply Last reply
          3
          • mrjjM mrjj

            @saber
            Hi
            you have to set eventfiler on its viewport class.

            S Offline
            S Offline
            saber
            wrote on last edited by saber
            #5

            @mrjj i don't know what is viewport class.

            @Ratzz i tried connect method , but it only works when in click an item.

            i want a function , when i click no item or whitespace.

            mrjjM 1 Reply Last reply
            0
            • S saber

              @mrjj i don't know what is viewport class.

              @Ratzz i tried connect method , but it only works when in click an item.

              i want a function , when i click no item or whitespace.

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

              @saber
              Its sort of a inner widget that actually is covering the background of the ListView
              its the object that get events etc.
              You get get it via
              ui->listView->viewport();
              and use it in connect.

              S 1 Reply Last reply
              1
              • mrjjM mrjj

                @saber
                Its sort of a inner widget that actually is covering the background of the ListView
                its the object that get events etc.
                You get get it via
                ui->listView->viewport();
                and use it in connect.

                S Offline
                S Offline
                saber
                wrote on last edited by saber
                #7

                @mrjj here is how i tried

                // in constructor 
                connect(ui->viewlist->viewport(), SIGNAL(clicked()),this, SLOT(ll()));
                
                void corefm::ll(){
                
                    qDebug() << "lllllll " ;
                }
                

                in application output i got this .

                QObject::connect: No such signal QWidget::clicked() in
                ../corebox/corefm/corefm.cpp:45
                QObject::connect:  (sender name:   'qt_scrollarea_viewport')
                QObject::connect:  (receiver name: 'corefm')
                

                and why this is not working ??

                void corefm::mousePressEvent(QMouseEvent *event)
                {
                    qDebug() << "Mounting " ;
                }
                
                1 Reply Last reply
                0
                • mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by mrjj
                  #8

                  Hi
                  The viewport do not have a clicked() signal.
                  I meant for you use it with event filter to catch it that way.

                  S 2 Replies Last reply
                  3
                  • mrjjM mrjj

                    Hi
                    The viewport do not have a clicked() signal.
                    I meant for you use it with event filter to catch it that way.

                    S Offline
                    S Offline
                    saber
                    wrote on last edited by
                    #9

                    @mrjj

                    here is the 2 view for my file manager . first on is listview and second one is tree view.
                    but mouse mousePressEvent is not working.

                    here is the cpp file corefm.cpp

                    ui->viewlist->viewport()->installEventFilter(this);
                    ui->viewtree->viewport()->installEventFilter(this);
                    
                    1 Reply Last reply
                    0
                    • mrjjM mrjj

                      Hi
                      The viewport do not have a clicked() signal.
                      I meant for you use it with event filter to catch it that way.

                      S Offline
                      S Offline
                      saber
                      wrote on last edited by
                      #10

                      @mrjj i am getting mousePressEvent in outside of listview

                      0_1525099082598_uu.png

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

                        Hmm, it dont recall it being that difficult.
                        And the listview is all the way down there ?

                        S 1 Reply Last reply
                        0
                        • mrjjM mrjj

                          Hmm, it dont recall it being that difficult.
                          And the listview is all the way down there ?

                          S Offline
                          S Offline
                          saber
                          wrote on last edited by saber
                          #12

                          @mrjj
                          no, that is another widget.
                          i need that function . please help me

                          mrjjM 1 Reply Last reply
                          0
                          • S saber

                            @mrjj
                            no, that is another widget.
                            i need that function . please help me

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

                            @saber
                            Well what ever widget is under the mouse cursor gets the click.
                            So you need event filter on those too.
                            I though you just want to click outside the actual items,
                            not the whole wide window.

                            S 1 Reply Last reply
                            0
                            • mrjjM mrjj

                              @saber
                              Well what ever widget is under the mouse cursor gets the click.
                              So you need event filter on those too.
                              I though you just want to click outside the actual items,
                              not the whole wide window.

                              S Offline
                              S Offline
                              saber
                              wrote on last edited by saber
                              #14

                              @mrjj
                              yes , i just want to click outside the actual items in listview .
                              i just want click event on list view .
                              not whole window.

                              0_1525160332219_Screenshot_2018-05-01_13-34-34.png

                              but mouse press event not working there.

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                saber
                                wrote on last edited by
                                #15

                                any light ?

                                1 Reply Last reply
                                0
                                • VRoninV Offline
                                  VRoninV Offline
                                  VRonin
                                  wrote on last edited by VRonin
                                  #16

                                  Try this:

                                  class ClickOutListView : public QListView{
                                  Q_OBJECT
                                  Q_DISABLE_COPY(ClickOutListView)
                                  public:
                                  explicit ClickOutListView(QWidget* parent = Q_NULLPTR) : QListView(parent){}
                                  Q_SIGNALS:
                                  void clickedOut();
                                  protected:
                                  void mousePressEvent(QMouseEvent *event){
                                  if(!indexAt(event->pos()).isValid()) 
                                  clickedOut();
                                  QListView::mousePressEvent(event);
                                  }
                                  };
                                  

                                  and right-click->promote your QListView to ClickOutListView in designer

                                  "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                  ~Napoleon Bonaparte

                                  On a crusade to banish setIndexWidget() from the holy land of Qt

                                  S 1 Reply Last reply
                                  4
                                  • VRoninV VRonin

                                    Try this:

                                    class ClickOutListView : public QListView{
                                    Q_OBJECT
                                    Q_DISABLE_COPY(ClickOutListView)
                                    public:
                                    explicit ClickOutListView(QWidget* parent = Q_NULLPTR) : QListView(parent){}
                                    Q_SIGNALS:
                                    void clickedOut();
                                    protected:
                                    void mousePressEvent(QMouseEvent *event){
                                    if(!indexAt(event->pos()).isValid()) 
                                    clickedOut();
                                    QListView::mousePressEvent(event);
                                    }
                                    };
                                    

                                    and right-click->promote your QListView to ClickOutListView in designer

                                    S Offline
                                    S Offline
                                    saber
                                    wrote on last edited by
                                    #17

                                    @VRonin
                                    sorry for late reply .
                                    your code is working.
                                    can i use this in treewidget to achieve same mouseevent?

                                    mrjjM 1 Reply Last reply
                                    0
                                    • S saber

                                      @VRonin
                                      sorry for late reply .
                                      your code is working.
                                      can i use this in treewidget to achieve same mouseevent?

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

                                      @saber
                                      Hi
                                      Yes QTreeWidget also have
                                      mousePressEvent etc. so should work the same.

                                      S 1 Reply Last reply
                                      1
                                      • mrjjM mrjj

                                        @saber
                                        Hi
                                        Yes QTreeWidget also have
                                        mousePressEvent etc. so should work the same.

                                        S Offline
                                        S Offline
                                        saber
                                        wrote on last edited by
                                        #19

                                        @mrjj

                                        in treeview it's also working.
                                        thanks.

                                        1 Reply Last reply
                                        1

                                        • Login

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