Portál AbcLinuxu, 5. května 2025 13:08

Dotaz: Úplne jednoduchý browser (qtwebkit)

17.10.2014 08:53 Peter
Úplne jednoduchý browser (qtwebkit)
Přečteno: 492×
Odpovědět | Admin
Čaute.

S Qt nemám prakticky žiadne skúsenosti. Potrebujem pre jeden mini projekt úplne "blbý" browser a rozhodol som sa ho vyrobiť pomocou qtwebkit

browser.pro
QT += webkit
SOURCES = browser.cpp
browser.cpp
#include <QtGui>
#include <QtWebKit>

int main(int argc, char** argv) {
    QApplication app(argc, argv);
    QWebView view;
    view.show();
    view.setUrl(QUrl("http://localhost:10000/"));
    return app.exec();
}
Všetko funguje perfektne až na jednu vec - sťahovanie súboru. Tá aplikácia ktorá bude v tom browseri bežať totižto generuje CSV súbor, ktorý ponúkne na stiahnutie. Zaujímavé je, že upload funguje úplne v pohode, ale pri downloade sa nedeje absolútne nič.

Za pomoc vám vopred veľmi pekne ďakujem.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.10.2014 11:33 tm
Rozbalit Rozbalit vše Re: Úplne jednoduchý browser (qtwebkit)
Odpovědět | | Sbalit | Link | Blokovat | Admin
http://stackoverflow.com/questions/16346219/how-to-download-files-from-qwebview
Beda0 avatar 17.10.2014 11:47 Beda0 | skóre: 29
Rozbalit Rozbalit vše Re: Úplne jednoduchý browser (qtwebkit)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle tohodle to vypadá, že se to musí udělat ručně - při stahování to vyhodí signál kterej se musí spárovat s nějakym slotem a obsloužit ho.
17.10.2014 12:46 Peter
Rozbalit Rozbalit vše Re: Úplne jednoduchý browser (qtwebkit)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takže momentálny stav je nasledovný

main.pro
QT     += gui network webkit
HEADERS = mainwindow.h
SOURCES = main.cpp \
          mainwindow.cpp
main.cpp
#include <QtGui>
#include <QtNetwork>
#include <QtWebKit>
#include "mainwindow.h"

int main(int argc, char * argv[]) {
    QApplication app(argc, argv);
    MainWindow browser;
    browser.setWindowTitle("Data");
    browser.show();
    return app.exec();
}
mainwindow.cpp
#include <QtGui>
#include <QtNetwork>
#include <QtWebKit>
#include "mainwindow.h"

MainWindow::MainWindow() {
    QWebView * view = new QWebView(this);
    view->load(QUrl("http://localhost:10000/"));
    view->page()->setForwardUnsupportedContent(true);
    connect(view->page(),SIGNAL(unsupportedContent(QNetworkReply*)),this,SLOT(unsupportedContent(QNetworkReply*)));
    setCentralWidget(view);
}

void MainWindow::unsupportedContent(QNetworkReply * reply) {
    qDebug("Download Requested");
}
mainwindow.h
#include <QtGui>
#include <QtNetwork>
#include <QtWebKit>

class MainWindow : public QMainWindow {
    Q_OBJECT
    public:
	MainWindow();
    public slots:
	void unsupportedContent(QNetworkReply * reply);
};
Po kliknutí na odkaz, ktorý má spustiť sťahovanie mi qDebug do konzoli vypíše "Download Request", čiže to znamená, že slot ako taký funguje. Teraz už len potrebujem poriešiť samotné stiahnutie súboru, ale zatial sa mi nedarí nájsť žiaden príklad. Ak ma niekto navedie, tak mu budem veľmi zaviazaný. Apropo, S Qt a C++ teraz robím úplne po prvý krát, tak poprosím pomaly na mna. :-D
17.10.2014 13:53 nobody
Rozbalit Rozbalit vše Re: Úplne jednoduchý browser (qtwebkit)
mozna najdes inspiraci v Otter Browser ?
20.10.2014 11:23 hanzz | skóre: 19 | blog: hanzz
Rozbalit Rozbalit vše Re: Úplne jednoduchý browser (qtwebkit)
http://qt-project.org/wiki/Download_Data_from_URL
Josef Kufner avatar 20.10.2014 21:50 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Úplne jednoduchý browser (qtwebkit)
Stahovaný soubor dostaneš jako parametr reply slotu unsupportedContent. Zkus si vypsat reply->readAll(), mělo by to vrátit obsah staženého souboru. Více viz dokumentace.
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.