Qt读取HTML内容并使用QTextDocument显示 - 代码示例
{"title":"Qt读取HTML内容并使用QTextDocument显示 - 代码示例","description":"使用Qt的QNetworkAccessManager读取HTML内容,并利用QTextDocument的setHtml接口将HTML内容显示在QTextEdit中。代码示例演示了如何实现这一功能。","keywords":"Qt, QNetworkAccessManager, QTextDocument, setHtml, HTML, 读取内容, 显示内容, 代码示例","content":"# Qt读取HTML内容并使用QTextDocument显示
使用Qt的QNetworkAccessManager读取HTML内容,并利用QTextDocument的setHtml接口将HTML内容显示在QTextEdit中。
代码示例
#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。
原文地址: https://www.cveoy.top/t/topic/pY8p 著作权归作者所有。请勿转载和采集!