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 move cursor to a at a specific line number
Forum Updated to NodeBB v4.3 + New Features

How to move cursor to a at a specific line number

Scheduled Pinned Locked Moved Solved General and Desktop
14 Posts 4 Posters 2.1k 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.
  • U UG SEP

    Hey, I am trying to move the cursor to a specific line number but It moves it to the index no.
    Here is the piece of code :

     cursor.movePosition(QTextCursor::StartOfLine,QTextCursor::MoveAnchor,line);
    

    Please tell me that what wrong I am doing??
    Thanks in advance

    JonBJ Offline
    JonBJ Offline
    JonB
    wrote on last edited by JonB
    #3

    @UG-SEP
    What is "index no"?

    Anyway, I believe you'll want to use QTextBlock QTextDocument::findBlockByLineNumber(int lineNumber) const. See e.g. https://stackoverflow.com/questions/27036048/how-to-scroll-to-the-specified-line-in-qplaintextedit.

    U 1 Reply Last reply
    0
    • JonBJ JonB

      @UG-SEP
      What is "index no"?

      Anyway, I believe you'll want to use QTextBlock QTextDocument::findBlockByLineNumber(int lineNumber) const. See e.g. https://stackoverflow.com/questions/27036048/how-to-scroll-to-the-specified-line-in-qplaintextedit.

      U Offline
      U Offline
      UG SEP
      wrote on last edited by
      #4

      @JonB I tried it but when I 1 the condition is that when I add an Image at index=0 and then write some text at the index: 1 and then when I add Image at index:2 it added before the first image at index:0
      Hope you understand for more clarification here is the image:
      1.jpg

      1 Reply Last reply
      0
      • U Offline
        U Offline
        UG SEP
        wrote on last edited by
        #5

        help me @JonB

        1 Reply Last reply
        0
        • U Offline
          U Offline
          UG SEP
          wrote on last edited by
          #6

          @JonB please help me

          JonBJ 1 Reply Last reply
          0
          • U UG SEP

            @JonB please help me

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by
            #7

            @UG-SEP
            Show some minimal code of what you tried and what does not work. I don't think we even know what kind of widget you are using. I don't even understand what your screenshot is all about, no idea how it relates to the question.

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

              Hi

              Is this a Text Edit ???
              alt text

              Yes please do as @JonB says and explain a bit more about those
              "index" you talk about. I'm not sure what it means as TextEdit don't use index as such.

              1 Reply Last reply
              0
              • artwawA Offline
                artwawA Offline
                artwaw
                wrote on last edited by
                #9

                I fail to understand what you intend to do but from what you already wrote you got the whole idea wrong.

                QTextCursor has no way of knowing "which line", the whole concept of "lines of text" Is entirely not present in the text processing provided by Qt. The reason is that the context of QTextDocument is being laid out using QAbstractTextDocumentLayout, which you can of course subclass, but main point is - this is done and should be done automatically depending on the size of the view etc.

                If you read QTextCursor and QTextDocument documentation (did you? really?) you will realise at least two things:

                1. From the contextual point of view character content is just one big string.
                2. The smallest portion of the text you can jump between is called the block, which is in turn defined as more or less the paragraph. Details on how to deal with that can be in part found here: https://doc.qt.io/qt-5/qtextblock.html (yes, there is a class for that!).

                You can also iterate over the words but that's quite obvious.

                So in order to achieve minimal flexibility you seem to need I'd rather start with constructing properly formed QTextDocument, ideally by adding content on block-by-block basis so we can be sure of the structure. Importing text as whole does not guarantee block division to be set correctly.

                Of course all the above remains just a pure theory knowledge that can be easily obtain by simply reading three pages of documentation. Four, if you count in the general overview of rich text processing in Qt.

                Now please show us the relevant parts of your code so we can assist.

                For more information please re-read.

                Kind Regards,
                Artur

                1 Reply Last reply
                0
                • U Offline
                  U Offline
                  UG SEP
                  wrote on last edited by
                  #10

                  Ok, @JonB, @mrjj, and @artwaw. Let me explain
                  Yes, it is a TextEdit Widget...
                  And here is the piece of code

                     QUrl Uri(QString("file://%1").arg(file));
                      QImage image = QImageReader(file).read();
                      QTextDocument * textDocument = ui -> textEdit -> document();
                      textDocument -> addResource(QTextDocument::ImageResource, Uri, QVariant(image));
                      QTextCursor cursor(ui ->textEdit->document()->findBlockByLineNumber(line-1));
                      ui->textEdit->setTextCursor(cursor);
                      QTextImageFormat imageFormat;
                      imageFormat.setWidth(image.width());
                      imageFormat.setHeight(image.height());
                      imageFormat.setName(Uri.toString());
                      cursor.insertImage(imageFormat);
                  

                  i.e. Like I add an Image at line number 1 and after that I add a text at line no 2 and at last I add one more Image at the 3 line but that Image didn't appear on the 3rd line it's appear on the 1 line at the 1st and 2nd Line content shift down by One line.
                  That the problem It not add at line number 3rd else everything works fine

                  JonBJ 1 Reply Last reply
                  0
                  • U UG SEP

                    Ok, @JonB, @mrjj, and @artwaw. Let me explain
                    Yes, it is a TextEdit Widget...
                    And here is the piece of code

                       QUrl Uri(QString("file://%1").arg(file));
                        QImage image = QImageReader(file).read();
                        QTextDocument * textDocument = ui -> textEdit -> document();
                        textDocument -> addResource(QTextDocument::ImageResource, Uri, QVariant(image));
                        QTextCursor cursor(ui ->textEdit->document()->findBlockByLineNumber(line-1));
                        ui->textEdit->setTextCursor(cursor);
                        QTextImageFormat imageFormat;
                        imageFormat.setWidth(image.width());
                        imageFormat.setHeight(image.height());
                        imageFormat.setName(Uri.toString());
                        cursor.insertImage(imageFormat);
                    

                    i.e. Like I add an Image at line number 1 and after that I add a text at line no 2 and at last I add one more Image at the 3 line but that Image didn't appear on the 3rd line it's appear on the 1 line at the 1st and 2nd Line content shift down by One line.
                    That the problem It not add at line number 3rd else everything works fine

                    JonBJ Offline
                    JonBJ Offline
                    JonB
                    wrote on last edited by JonB
                    #11

                    @UG-SEP
                    You have been asked what your screenshot shows. It does not look like a QTextEdit, and it does not look like it should be a QTextEdit. It looks like a QTreeView, with folding & icons & columns.

                    U 1 Reply Last reply
                    1
                    • JonBJ JonB

                      @UG-SEP
                      You have been asked what your screenshot shows. It does not look like a QTextEdit, and it does not look like it should be a QTextEdit. It looks like a QTreeView, with folding & icons & columns.

                      U Offline
                      U Offline
                      UG SEP
                      wrote on last edited by
                      #12

                      @JonB It is QTextEdit and the screenshot show the output of the program
                      as I have written what I want in the previous post

                      JonBJ 1 Reply Last reply
                      0
                      • U UG SEP

                        @JonB It is QTextEdit and the screenshot show the output of the program
                        as I have written what I want in the previous post

                        JonBJ Offline
                        JonBJ Offline
                        JonB
                        wrote on last edited by
                        #13

                        @UG-SEP
                        Well I would never have known that, and you're saying the screenshot you show has nothing relevant to do with your question. Shame you didn't show the QTextEdit and how it went wrong, to help responders,

                        U 1 Reply Last reply
                        0
                        • JonBJ JonB

                          @UG-SEP
                          Well I would never have known that, and you're saying the screenshot you show has nothing relevant to do with your question. Shame you didn't show the QTextEdit and how it went wrong, to help responders,

                          U Offline
                          U Offline
                          UG SEP
                          wrote on last edited by
                          #14

                          @JonB So what should I do

                          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