[SOLVED] Load HTML file to search for a string



  • Hi there.

    My task is to write an application that loads a locally stored HTML file and search for a string in there.
    So I took a Push Button and connected with the slot, put the content into an QTextStream to display the file's content in a Text Browser – which is working fine so far.

    Now, if I get it correctly in order to search for a substring I need to have a QString object – and that's where I end up with an empty string.

    Question is: why is

    ui->textBrowserHTML->setText(in.readAll());
    

    working (showing content in the textBrowser) whereas

    QString myString;
    myString = in.readAll();
    

    results in an empty string? What am I – Newby that I am – missing here?

    So here's the whole code:

    void MainWindow::on_getHTMLButton_clicked()
    {
        QString filename = QFileDialog::getOpenFileName
                (
                    this,
                    tr("Open HTML-File:"),
                    "/Downloads/"
                    "HTML–Datei (*.htm*)"
                    );
        
        if (filename.isEmpty())
            QMessageBox::information(this, tr("File Name"), "Please choose valid file.");
        else
        {
            // Create file
            QFile file(filename);
            if (!file.open(QIODevice::ReadOnly))
            {
                QMessageBox::information(0, "Info", file.errorString());
            } 
            else
            {            
                // Create Stream
                QTextStream in(&file);
                
                ui->textBrowserHTML->setText(in.readAll());
                
                // Create string from stream
                QString myString;
                myString = in.readLine();
                
                if (myString.isEmpty())
                    qDebug() << "String is empty…";
                else
                    qDebug() << "String:" << myString;
            }
        }
    }
    

  • Moderators

    @ASSeeger,
    Because once after readAll there is nothing left to read again from that stream and thus it returns empty.



  • Do not know what is the type of "ui->textBrowserHTML", I guess it is QTextEdit
    Like @p3c0 said, after readAll there is nothing left to read again
    you can get the string as following if it is QTextEdit

    auto const WebContent = ui->textBrowserHTML->toPlainText();


  • @p3c0 Thank you, I now did the creation of the string before displaying it in the textBrowser – and now it works.


  • Moderators

    @ASSeeger That's great :)
    You can also mark the post as solved if done. Just edit the post title and prepend [Solved].



  • @stereomatchingkiss Also thank you, as stated above I just changed the workflow and now it works. It's been a QTextBrowser by the way.
    Thanks for your efforts!


  • Moderators

    This post is deleted!


Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.