下面是一个使用Qt编写的简单下载程序示例,它将打开一个文件对话框,让用户选择要下载的文件地址。
#include <QApplication>
#include <QFileDialog>
#include <QMessageBox>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QUrl>
class Downloader : public QObject
{
Q_OBJECT
public:
explicit Downloader(QObject *parent = nullptr) : QObject(parent)
{
connect(&manager, &QNetworkAccessManager::finished, this, &Downloader::downloadFinished);
}
public slots:
void chooseFile()
{
QString filePath = QFileDialog::getSaveFileName(nullptr, "Save File", "", "All Files (*)");
if (!filePath.isEmpty()) {
download(QUrl("https://example.com/file-to-download"), filePath);
}
}
private slots:
void downloadFinished(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError) {
QMessageBox::information(nullptr, "Download", "Download completed successfully.");
} else {
QMessageBox::critical(nullptr, "Download", "Error downloading file: " + reply->errorString());
}
reply->deleteLater();
}
private:
void download(const QUrl &url, const QString &filePath)
{
QNetworkRequest request(url);
manager.get(request)->setProperty("FilePath", filePath);
}
private:
QNetworkAccessManager manager;
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Downloader downloader;
// 在主窗口弹出框中选择下载路径
QTimer::singleShot(0, [&]() { downloader.chooseFile(); });
return app.exec();
}
#include "main.moc"
这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。它使用了Qt的网络访问类QNetworkAccessManager
来执行下载操作,并通过QFileDialog
选择要保存文件的路径。下载完成后,将显示相应的消息对话框提示用户。
内容由零声教学AI助手提供,问题来源于学员提问