Qt Creator Manual

Debugging the Example Application

This section uses the TextFinder example to illustrate how to debug Qt C++ applications in the Debug mode.

TextFinder reads a text file into QString and then displays it with QTextEdit. To look at the example QString, line, and see the stored data, place a breakpoint and view the QString object data, as follows:

  1. Click in between the line number and the window border on the line where we invoke setPlainText() to set a breakpoint.

  2. Select Debug > Start Debugging > Start Debugging or press F5.
  3. To view the breakpoint, click the Breakpoints tab.

  4. To remove a breakpoint, right-click it and select Delete Breakpoint.
  5. To view the contents of line, go to the Locals and Watchers view.

Modify the on_findButton_clicked() function to move back to the start of the document and continue searching once the cursor hits the end of the document. Add the following code snippet:

 void TextFinder::on_findButton_clicked()
 {
     QString searchString = ui->lineEdit->text();

     QTextDocument *document = ui->textEdit->document();
     QTextCursor cursor = ui->textEdit->textCursor();
     cursor = document->find(searchString, cursor,
         QTextDocument::FindWholeWords);
     ui->textEdit->setTextCursor(cursor);

     bool found = cursor.isNull();

     if (!found && previouslyFound) {
         int ret = QMessageBox::question(this, tr("End of Document"),
         tr("I have reached the end of the document. Would you like "
         "me to start searching from the beginning of the document?"),
         QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);

         if (ret == QMessageBox::Yes) {
             cursor = document->find(searchString,
                 QTextDocument::FindWholeWords);
             ui->textEdit->setTextCursor(cursor);
         } else
             return;
     }
     previouslyFound = found;
 }

If you compile and run the above code, however, the application does not work correctly due to a logic error. To locate this logic error, step through the code using the following buttons:

X

Thank you for giving your feedback.

Make sure it is related to this specific page. For more general bugs and requests, please use the Qt Bug Tracker.

[0]; s.parentNode.insertBefore(ga, s); })();