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. how to use QScroller::grabGesture(ui->scrollArea , QScroller::LeftMouseButtonGesture) in one or more scrollarea ?

how to use QScroller::grabGesture(ui->scrollArea , QScroller::LeftMouseButtonGesture) in one or more scrollarea ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
4 Posts 2 Posters 742 Views 2 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.
  • Ramkumar MohanR Offline
    Ramkumar MohanR Offline
    Ramkumar Mohan
    wrote on last edited by
    #1

    how to use QScroller::grabGesture(ui->scrollArea , QScroller::LeftMouseButtonGesture) in one or more scrollarea ?

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

      Hi

      void MainWindow::SetupScroller()
      {
      
          QScroller::grabGesture(ui->scrollArea->viewport(), QScroller::LeftMouseButtonGesture);
          QVariant OvershootPolicy = QVariant::fromValue<QScrollerProperties::OvershootPolicy>(QScrollerProperties::OvershootAlwaysOff);
          QScrollerProperties ScrollerProperties = QScroller::scroller(ui->scrollArea->viewport())->scrollerProperties();
          ScrollerProperties.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, OvershootPolicy);
          ScrollerProperties.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, OvershootPolicy);
          QScroller::scroller(ui->scrollArea->viewport())->setScrollerProperties(ScrollerProperties);
      ]
      

      Notice we use ui->scrollArea->viewport() as that the actual widget that is clicked on and not the scrollArea directly.
      Also you might want to set Minimum Height/width for the view port as not having it being fit to the scrollArea if your use case is to have a scrollable
      area that is smaller than area for the scrollArea.

      alt text

      Ramkumar MohanR 1 Reply Last reply
      0
      • mrjjM mrjj

        Hi

        void MainWindow::SetupScroller()
        {
        
            QScroller::grabGesture(ui->scrollArea->viewport(), QScroller::LeftMouseButtonGesture);
            QVariant OvershootPolicy = QVariant::fromValue<QScrollerProperties::OvershootPolicy>(QScrollerProperties::OvershootAlwaysOff);
            QScrollerProperties ScrollerProperties = QScroller::scroller(ui->scrollArea->viewport())->scrollerProperties();
            ScrollerProperties.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, OvershootPolicy);
            ScrollerProperties.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, OvershootPolicy);
            QScroller::scroller(ui->scrollArea->viewport())->setScrollerProperties(ScrollerProperties);
        ]
        

        Notice we use ui->scrollArea->viewport() as that the actual widget that is clicked on and not the scrollArea directly.
        Also you might want to set Minimum Height/width for the view port as not having it being fit to the scrollArea if your use case is to have a scrollable
        area that is smaller than area for the scrollArea.

        alt text

        Ramkumar MohanR Offline
        Ramkumar MohanR Offline
        Ramkumar Mohan
        wrote on last edited by
        #3

        @mrjj ok, but this is used for only one scroll area for me. I want to use one or more scrollarea'a it is possible?

        mrjjM 1 Reply Last reply
        0
        • Ramkumar MohanR Ramkumar Mohan

          @mrjj ok, but this is used for only one scroll area for me. I want to use one or more scrollarea'a it is possible?

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

          @Ramkumar-Mohan

          Yes just setup both Scrollareas
          They won't scroll in sync if that is what you mean but both can scroll

          
          void MainWindow::SetupScroller(QScrollArea *area)
          {
          
              QScroller::grabGesture(area->viewport(), QScroller::LeftMouseButtonGesture);
              QVariant OvershootPolicy = QVariant::fromValue<QScrollerProperties::OvershootPolicy>(QScrollerProperties::OvershootAlwaysOff);
              QScrollerProperties ScrollerProperties = QScroller::scroller(area->viewport())->scrollerProperties();
              ScrollerProperties.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, OvershootPolicy);
              ScrollerProperties.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, OvershootPolicy);
              QScroller::scroller(area->viewport())->setScrollerProperties(ScrollerProperties);
          }
          
          ....
           SetupScroller(ui->scrollArea3);
           SetupScroller(ui->scrollArea_2);
          
          

          alt text

          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