你可以使用QNetworkAccessManager来读取HTML内容,并使用QTextDocument的setHtml接口来显示。

下面是一个示例代码:

#include <QtWidgets>
#include <QtNetwork>

class HtmlReader : public QWidget
{
    Q_OBJECT

public:
    HtmlReader(QWidget *parent = nullptr) : QWidget(parent)
    {
        // 创建一个 QTextEdit 用于显示 HTML 内容
        QTextEdit *textEdit = new QTextEdit(this);
        textEdit->setReadOnly(true);

        // 创建一个按钮,用于触发读取 HTML 内容的操作
        QPushButton *button = new QPushButton("读取", this);

        // 使用布局管理器来布局界面
        QVBoxLayout *layout = new QVBoxLayout(this);
        layout->addWidget(textEdit);
        layout->addWidget(button);

        // 当按钮被点击时,触发读取 HTML 内容的操作
        connect(button, &QPushButton::clicked, this, &HtmlReader::readHtml);

        setLayout(layout);
    }

private slots:
    void readHtml()
    {
        // 创建 QNetworkAccessManager 对象
        QNetworkAccessManager *manager = new QNetworkAccessManager(this);

        // 发送 HTTP GET 请求
        QNetworkReply *reply = manager->get(QNetworkRequest(QUrl("http://example.com")));

        // 当请求完成时,读取 HTML 内容并显示在 QTextEdit 上
        connect(reply, &QNetworkReply::finished, [this, reply]() {
            if (reply->error() == QNetworkReply::NoError) {
                // 读取 HTML 内容
                QString html = reply->readAll();

                // 创建 QTextDocument 对象,并设置 HTML 内容
                QTextDocument *document = new QTextDocument(this);
                document->setHtml(html);

                // 显示 HTML 内容在 QTextEdit 上
                QTextEdit *textEdit = findChild<QTextEdit*>();
                if (textEdit) {
                    textEdit->setDocument(document);
                }
            } else {
                qDebug() << "Error:" << reply->errorString();
            }

            // 清理资源
            reply->deleteLater();
        });
    }
};

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    HtmlReader reader;
    reader.show();

    return app.exec();
}

#include "main.moc"

在上面的示例代码中,我们创建了一个自定义的QWidget类HtmlReader,它包含一个QTextEdit和一个QPushButton。当按钮被点击时,我们使用QNetworkAccessManager发送HTTP GET请求获取HTML内容,并使用QTextDocument的setHtml接口将HTML内容显示在QTextEdit上。

在main函数中,我们创建了一个QApplication对象,并显示我们的HtmlReader窗口。

请注意,这个示例代码假设你已经在.pro文件中添加了网络模块的依赖:QT += network

读取html中的内容并使用QTextDocument的setHtml接口显示

原文地址: http://www.cveoy.top/t/topic/igQ5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录