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 Update on Monday, May 27th 2025

get mousePressEvent in qlistview

Scheduled Pinned Locked Moved Solved General and Desktop
19 Posts 4 Posters 4.0k 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.
  • 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