读取html中的内容并使用QTextDocument的setHtml接口显示
你可以使用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
原文地址: http://www.cveoy.top/t/topic/igQ5 著作权归作者所有。请勿转载和采集!