Windows 7 SP1
MSVS 2010
Qt 4.8.4
I am using QTextCursor to grab each block's text. I use select(QTextCursor::BlockUnderCursor) to grab the text and then go to the next block with movePosition(QTextCursor::NextBlock). But when I again select(QTextCursor::BlockUnderCursor) I get an extra junk character in the QString and the anchor has moved to the end of the previous block.
Using this for text.txt:
	
	- A 
- B 
        A
B
To copy to clipboard, switch view to plain text mode 
  
This code's comments walks through the issue and asks the questions:
	
	- #include <QTGui> 
-  int main(int argc, char *argv[]) 
- { 
-   
-     editor->setDocument(document); 
-         editor->setPlainText(file.readAll()); 
-   
-     int pos = cursor->position();           // = 0 
-     int anchor = cursor->anchor();          // = 0 
-   
-     pos = cursor->position();               // = 1 
-     anchor = cursor->anchor();              // = 0 
-   
-     QString-  text  =-  cursor -- >selectedText ()- ;   // = "A"
 
-     int size = text.size();                 // = 1 
-   
-     pos = cursor->position();               // = 2 
-     anchor = cursor->anchor();              // = 2 
-   
-     pos = cursor->position();               // = 3 
-     anchor = cursor->anchor();              // = 1 Why not 2? 
-   
-     text = cursor->selectedText();          // "B" in debugger 
-                                             // but text.at(0) = junk & test.at(1) = "B" 
-     size = text.size();                     // = 2 Why? Why not 1? 
-   
-     return app.exec(); 
- } 
        #include <QTGui>
 int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QMainWindow*          window = new QMainWindow;
    QTextEdit*            editor = new QTextEdit(window);
    QTextDocument*      document = new QTextDocument(window);
    editor->setDocument(document);
    QFile file("test.txt");
    if (file.open(QFile::ReadOnly | QFile::Text))
        editor->setPlainText(file.readAll());
    QTextBlock block = document->begin();
    QTextCursor* cursor = new QTextCursor(document);
    int pos = cursor->position();           // = 0
    int anchor = cursor->anchor();          // = 0
    cursor->select(QTextCursor::BlockUnderCursor);
    pos = cursor->position();               // = 1
    anchor = cursor->anchor();              // = 0
    QString text = cursor->selectedText();  // = "A"
    int size = text.size();                 // = 1
    cursor->movePosition(QTextCursor::NextBlock);
    pos = cursor->position();               // = 2
    anchor = cursor->anchor();              // = 2
    cursor->select(QTextCursor::BlockUnderCursor);
    pos = cursor->position();               // = 3
    anchor = cursor->anchor();              // = 1 Why not 2?
    text = cursor->selectedText();          // "B" in debugger
                                            // but text.at(0) = junk & test.at(1) = "B"
    size = text.size();                     // = 2 Why? Why not 1?
    return app.exec();
}
To copy to clipboard, switch view to plain text mode 
  
				
			
Bookmarks