を呼び出すことはできません。まず、私の悪い英語を謝りたい。ここに私の個人的なプロジェクトのコードがあり、私は助けが必要です。実行時の現在のコードはこのビデオ(http://media09.vbox7.com/s/21/21bbc2dca3r3634e3389.mp4)をダウンロードする必要がありますが、動作しません。 // mainwindow.cppC++ - QTフレームワーク/メソッド
MainWindow :: MainWindow (QWidget * parent):
QMainWindow (parent),
ui (new Ui :: MainWindow)
{
QtDownload dl;
dl.setTarget ("http://media09.vbox7.com/s/21/21bbc2dca3r3634e3389.mp4");
dl.download();
// Quit when the download is done.
// QObject :: connect (& dl, SIGNAL (done()), & app, SLOT (quit()));
........
}
:例 - ビデオは、次のコードは
// main.cppに
int main (int argc, char * argv [])
{
QApplication a (argc, argv);
MainWindow w;
w.show();
QtDownload dl;
dl.setTarget ("http://media09.vbox7.com/s/21/21bbc2dca3r3634e3389.mp4");
dl.download();
// Quit when the download is done.
// QObject :: connect (& dl, SIGNAL (done()), & app, SLOT (quit()));
return a.exec();
}
と私は方法のメインウィンドウで実行するに配置された場合にのみダウンロードされます
ここに、プログラムの現在のコードがあります。
// downloader.pro
#-------------------------------------------------
#
# Project created by QtCreator 2017-01-12T15:22:17
#
#-------------------------------------------------
QT += core gui
QT += network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = downloader
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QObject>
#include <QString>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkReply>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
class QtDownload : public QObject {
Q_OBJECT
public:
explicit QtDownload();
QNetworkAccessManager manager;
QString target;
void setTarget(const QString& t);
private:
signals:
void done();
public slots:
void download();
void downloadFinished(QNetworkReply* data);
void downloadProgress(qint64 recieved, qint64 total);
};
#endif // MAINWINDOW_H
//main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QtCore>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QUrl>
#include <QtNetwork/QNetworkRequest>
#include <QFile>
#include <QDebug>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkReply>
#include <QByteArray>
#include <QObject>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
// QCoreApplication app(argc, argv);
QtDownload dl;
dl.setTarget("http://media09.vbox7.com/s/21/21bbc2dca3r3634e3389.mp4");
dl.download();
//quit when the download is done.
// QObject::connect(&dl, SIGNAL(done()), &app, SLOT(quit()));
}
MainWindow::~MainWindow()
{
delete ui;
}
QtDownload::QtDownload() : QObject(0) {
QObject::connect(&manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(downloadFinished(QNetworkReply*)));
}
void QtDownload::setTarget(const QString &t) {
this->target = t;
}
void QtDownload::downloadFinished(QNetworkReply *data) {
QFile localFile("C:/downloadedfile.mp4");
if (!localFile.open(QIODevice::WriteOnly))
return;
const QByteArray sdata = data->readAll();
localFile.write(sdata);
qDebug() << sdata;
localFile.close();
emit done();
}
void QtDownload::download() {
QUrl url = QUrl::fromEncoded(this->target.toLocal8Bit());
QNetworkRequest request(url);
QObject::connect(manager.get(request), SIGNAL(downloadProgress(qint64,qint64)), this, SLOT(downloadProgress(qint64,qint64)));
}
void QtDownload::downloadProgress(qint64 recieved, qint64 total) {
qDebug() << recieved << total;
}
助けて。別の問題は、GUIのprogressBarにアクセスできないということです。void QtDownload :: downloadProgress(qint64、qint64 total){ // qDebug()<< recieved << total; MainWindow :: ui-> progressBar-> setMaximum(total); //動作しません MainWindow :: ui-> progressBar-> setValue(recieved); ////は動作しません } QtDownloadクラスのprogressBar(Ui_MainWindowクラス)へのアクセス方法を教えてください。 –
@Howto 私はあなたがしたいことに取り組んでいます。 – eyllanesc
@Howto complete code:https://github.com/eyllanesc/stackoverflow/tree/master/downloader – eyllanesc