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.1k 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.
  • 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