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. QTableWidget::itemSelectionChanged
Forum Updated to NodeBB v4.3 + New Features

QTableWidget::itemSelectionChanged

Scheduled Pinned Locked Moved General and Desktop
26 Posts 6 Posters 8.4k 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.
  • MegamouseM Offline
    MegamouseM Offline
    Megamouse
    wrote on last edited by
    #1

    Hi there,

    I found a thing that's unclear:

    When I have a tablewidget, in my case with these settings:

    table->setSelectionBehavior(QAbstractItemView::SelectRows);
    table->setSelectionMode(QAbstractItemView::SingleSelection);
    table->setEditTriggers(QAbstractItemView::NoEditTriggers);
    

    And then connect

    &QTableWidget::itemSelectionChanged
    

    Now upon clicking a row i can use currentRow to get the correct row. That's fine.

    But if I click a row and then drag the mouse to others, then the currentRow will always show the item i just exited

    This seems like something unintended to me

    1 Reply Last reply
    0
    • Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #2

      currentRow() is where the focus is currently on, currentSelection the current selection(range) - these are two completely different things.

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      2
      • MegamouseM Offline
        MegamouseM Offline
        Megamouse
        wrote on last edited by
        #3

        That doesnt explain why the currentrow is different when i click vs when i drag.
        To me it seems like the corresponding signal is not fired at the intended moment on one of these occasions

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

          Hi,

          What exactly do you mean by "drag the mouse" ? If you just hover your mouse over your view, then there's no change in the current selected row/item.

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

          1 Reply Last reply
          0
          • MegamouseM Offline
            MegamouseM Offline
            Megamouse
            wrote on last edited by
            #5

            click an item, keep the left mouse button pressed, then drag it to the next row so that it changes its selection.

            mrjjM 1 Reply Last reply
            0
            • MegamouseM Megamouse

              click an item, keep the left mouse button pressed, then drag it to the next row so that it changes its selection.

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

              @Megamouse
              Hi
              What Qt version are u using ?
              I cant seem to reproducing it not calling currentRow on drag to extend selection or
              on single selection only.

              alt text

              alt text

              1 Reply Last reply
              3
              • MegamouseM Offline
                MegamouseM Offline
                Megamouse
                wrote on last edited by
                #7

                no. I am calling currentRow

                mrjjM 1 Reply Last reply
                0
                • MegamouseM Megamouse

                  no. I am calling currentRow

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

                  @Megamouse
                  Hi
                  So do i

                  void MainWindow::on_listWidget_currentRowChanged(int currentRow) {
                   ui->label->setText( QString::number(currentRow) );
                  }
                  
                  

                  Update:
                  You mean u manually call currentRow and then its out of sync?

                  1 Reply Last reply
                  1
                  • MegamouseM Offline
                    MegamouseM Offline
                    Megamouse
                    wrote on last edited by
                    #9

                    call currentrow in the slot for itemSelectionChanged

                    1 Reply Last reply
                    0
                    • MegamouseM Offline
                      MegamouseM Offline
                      Megamouse
                      wrote on last edited by Megamouse
                      #10

                      it will be different depending if you click or click and drag.

                      btw Qt version is the awful 5.11.1 that completely broke the nativeevent message

                      mrjjM 1 Reply Last reply
                      0
                      • MegamouseM Megamouse

                        it will be different depending if you click or click and drag.

                        btw Qt version is the awful 5.11.1 that completely broke the nativeevent message

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

                        @Megamouse
                        Hi
                        Tried with

                        void MainWindow::on_listWidget_itemSelectionChanged() {
                          ui->label->setText( QString::number(ui->listWidget->currentRow()) );
                        }
                        

                        and it follows fine. So not sure why you see different results.
                        (also using 5.11.1)

                        • 5.11.1 that completely broke the nativeevent message
                          in what way ?
                        1 Reply Last reply
                        0
                        • MegamouseM Offline
                          MegamouseM Offline
                          Megamouse
                          wrote on last edited by Megamouse
                          #12

                          Can you send me the sample you use?

                          For the nativeevent:
                          Apparently it is already fixed for Qt 5.11.2.
                          But to explain:
                          One of the devs added a copy pasta mistake and now we need to cast the nativeEvent messages like this for Qt 5.11.1:

                          #if (QT_VERSION == QT_VERSION_CHECK(5, 11, 1))
                          MSG* msg = *reinterpret_cast<MSG**>(message);
                          #else
                          MSG* msg = reinterpret_cast<MSG*>(message);
                          #endif
                          

                          For some programs this breaks the whole application

                          mrjjM HojjatJafaryH 2 Replies Last reply
                          1
                          • MegamouseM Megamouse

                            Can you send me the sample you use?

                            For the nativeevent:
                            Apparently it is already fixed for Qt 5.11.2.
                            But to explain:
                            One of the devs added a copy pasta mistake and now we need to cast the nativeEvent messages like this for Qt 5.11.1:

                            #if (QT_VERSION == QT_VERSION_CHECK(5, 11, 1))
                            MSG* msg = *reinterpret_cast<MSG**>(message);
                            #else
                            MSG* msg = reinterpret_cast<MSG*>(message);
                            #endif
                            

                            For some programs this breaks the whole application

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

                            @Megamouse
                            ofc but its just default gui project with ListWidget
                            https://www.dropbox.com/s/y6dxx17dd6mc1cd/untitled68.zip?dl=0

                            oh, i see. type was changed to **
                            Well good they fixed it so fast :)

                            1 Reply Last reply
                            0
                            • MegamouseM Offline
                              MegamouseM Offline
                              Megamouse
                              wrote on last edited by
                              #14

                              in the second half you can see what i mean

                              0_1532863484741_ugh.gif

                              mrjjM 1 Reply Last reply
                              0
                              • MegamouseM Megamouse

                                in the second half you can see what i mean

                                0_1532863484741_ugh.gif

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

                                @Megamouse
                                Ah, yes, now i can do it too.
                                Holding left and rapid move up and down seems to lag behind one.
                                Funny enough the signal is correct. (right side)
                                alt text

                                Seems to be the order of signals.
                                As if i make a button

                                void MainWindow::on_pushButton_released()
                                {
                                    ui->label->setText( QString::number(ui->listWidget->currentRow()) );
                                }
                                

                                and then ask it, its correct.
                                so it seems when in itemSelectionChanged and not released the left buttons, its
                                not updated yet.

                                1 Reply Last reply
                                0
                                • MegamouseM Offline
                                  MegamouseM Offline
                                  Megamouse
                                  wrote on last edited by
                                  #16

                                  exactly. and in my opinion that's missing in the documentation.
                                  or even wrong in general

                                  mrjjM 1 Reply Last reply
                                  0
                                  • MegamouseM Megamouse

                                    exactly. and in my opinion that's missing in the documentation.
                                    or even wrong in general

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

                                    @Megamouse
                                    Well it might be border case and hence the slightly odd behavior.
                                    Since we are using SingleSelection, the dragging is really not needed as user
                                    can just click on the one he wants.

                                    1 Reply Last reply
                                    0
                                    • MegamouseM Offline
                                      MegamouseM Offline
                                      Megamouse
                                      wrote on last edited by
                                      #18

                                      Well.
                                      I use the selection as a direct visual indication.
                                      Meaning if you change the list object the view will show corresponding data on another table.

                                      So if i were to use currentrow in this case the data would be wrong.

                                      mrjjM 1 Reply Last reply
                                      0
                                      • MegamouseM Megamouse

                                        Well.
                                        I use the selection as a direct visual indication.
                                        Meaning if you change the list object the view will show corresponding data on another table.

                                        So if i were to use currentrow in this case the data would be wrong.

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

                                        @Megamouse

                                        Well did you try the signal for that. seems to be correct even
                                        when ui->listWidget->currentRow() is off. ?

                                        1 Reply Last reply
                                        0
                                        • MegamouseM Offline
                                          MegamouseM Offline
                                          Megamouse
                                          wrote on last edited by
                                          #20

                                          don't worry about it. It's fixed anyway. I just think it's a weird glitch or "feature"

                                          mrjjM 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