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

Capture scroll event in textEditor

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 3 Posters 2.8k 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