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