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. Capture scroll event in textEditor
Forum Updated to NodeBB v4.3 + New Features

Capture scroll event in textEditor

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 3 Posters 2.5k 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.
  • D Offline
    D Offline
    danga96
    wrote on last edited by
    #9

    @raven-worx
    sorry again, but how can I use this virtual method? do i need to make a connect?

    jsulmJ 1 Reply Last reply
    0
    • D danga96

      @raven-worx
      sorry again, but how can I use this virtual method? do i need to make a connect?

      jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #10

      @danga96 said in Capture scroll event in textEditor:

      do i need to make a connect?

      No, you simply override it in your class (scrollContentsBy is called by Qt framework). This is how virtual methods are used: if a subclass overrides it then its own implementation is called, else the implementation in the base class is called.

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • D Offline
        D Offline
        danga96
        wrote on last edited by
        #11

        @raven-worx said in Capture scroll event in textEditor:
        @jsulm
        thanks for answering me, but I can't get it to work; if I declare the method like this:

        QTextEdit::scrollContentsBy(int dx,int dy);
        

        it works, but not belonging to the class I can't exceed the private variables;
        do i have to do anything in .h, adding some define?
        in the .h I have tried:

        void scrollContentsBy(int dx, int dy) override;
        

        and in .cpp:

        void TextEdit::scrollContentsBy(int dx, int dy) { }
        

        and I get this error in compilation: "method with override specifier 'override' did not override any base class methods"

        jsulmJ 1 Reply Last reply
        0
        • D danga96

          @raven-worx said in Capture scroll event in textEditor:
          @jsulm
          thanks for answering me, but I can't get it to work; if I declare the method like this:

          QTextEdit::scrollContentsBy(int dx,int dy);
          

          it works, but not belonging to the class I can't exceed the private variables;
          do i have to do anything in .h, adding some define?
          in the .h I have tried:

          void scrollContentsBy(int dx, int dy) override;
          

          and in .cpp:

          void TextEdit::scrollContentsBy(int dx, int dy) { }
          

          and I get this error in compilation: "method with override specifier 'override' did not override any base class methods"

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by jsulm
          #12

          @danga96 Is your class derived from QTextEdit?

          class MyTextEdit : public QTextEdit
          {
          ...
          };
          

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          1
          • D Offline
            D Offline
            danga96
            wrote on last edited by
            #13

            now yes, but the class already inherits from QMainWindow, and I don't know if this creates conflicts, so is there a way to do it through a connect?

            jsulmJ 1 Reply Last reply
            0
            • D danga96

              now yes, but the class already inherits from QMainWindow, and I don't know if this creates conflicts, so is there a way to do it through a connect?

              jsulmJ Offline
              jsulmJ Offline
              jsulm
              Lifetime Qt Champion
              wrote on last edited by jsulm
              #14

              @danga96 I don't get it: you want to capture scroll events in QTextEdit but in your QMainWindow? That can't work.
              Create a new class as subclass of QTextEdit and use that subclass instead of QTextEdit...
              Also, is MyTextEdit really derived from QMainWindow?! If so then this is really a bad name.

              https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              1
              • D Offline
                D Offline
                danga96
                wrote on last edited by
                #15

                @jsulm
                I'm referring to this example: richtext-textedit
                I'm using it to do tests; at this point I would ask you how I can adapt this with the solution proposed by you?

                jsulmJ 1 Reply Last reply
                0
                • D danga96

                  @jsulm
                  I'm referring to this example: richtext-textedit
                  I'm using it to do tests; at this point I would ask you how I can adapt this with the solution proposed by you?

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on last edited by
                  #16

                  @danga96 The solution wasn't proposed by me.
                  In the textedit.h file you will find this line:

                  QTextEdit *textEdit;
                  

                  Replace it with your own class derived from QTextEdit:

                  MyOwnTextEdit *textEdit;
                  

                  In myowntextedit.h

                  class MyOwnTextEdit : public QTextEdit
                  {
                      ...
                      void scrollContentsBy(int dx, int dy) override;
                      ...
                  }
                  

                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  2
                  • D Offline
                    D Offline
                    danga96
                    wrote on last edited by
                    #17

                    @jsulm said in Capture scroll event in textEditor:
                    thank you very much, and I apologize in advance for the insistence, but in this way I have to modify almost everything, because I will have to create a new class and adapt all the changes I have made with this new type, only to manage the scroll event;
                    Therefore I would like to know if there is another way.

                    1 Reply Last reply
                    0
                    • D Offline
                      D Offline
                      danga96
                      wrote on last edited by
                      #18

                      finally I solved this way:

                      connect(textEdit->verticalScrollBar(), &QScrollBar::valueChanged, this, &TextEdit::handleUsersCursors);
                      	
                      connect(textEdit->horizontalScrollBar(), &QScrollBar::valueChanged, this, &TextEdit::handleUsersCursors);
                      

                      without creating a new class;
                      thanks anyway for the tips;

                      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