Автор Тема: Как да накарам QWebView да запомня последната директория от която е ъплоудвал  (Прочетена 3095 пъти)

h_paskalev

  • Гост
Привет, опитай с тези - http://www.developer.nokia.com/Community/Wiki/Qt_Object_Serialization и http://doc.qt.nokia.com/stable/qsettings.html.
В момента не се сещам варианти, които да са платформено-независими освен сериализиране на url полето и съхранение с QSettings. Успех!
« Последна редакция: Jul 02, 2011, 12:24 от H.Paskalev »
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Ооо да :)) Измислих го :)) Като се има впредвид, че поливам последният ми изпит от бакалавъра, направо се чудя как успях да го напиша  ;D

Таа решениет окакто винаги е много просто :)

Хедър:
Код:
#ifndef MYWEBPAGE_H
#define MYWEBPAGE_H

#include <QWebPage>

class MyWebPage : public QWebPage
{
    Q_OBJECT
public:
    explicit MyWebPage(QObject *parent = 0);

signals:

public slots:

protected:
    virtual QString chooseFile(QWebFrame *originatingFrame, const QString& oldFile);

};

#endif // MYWEBPAGE_H


Имплементация:
Код:
#include "mywebpage.h"


#include <QtGui/QFileDialog>

#include <QtCore/QSettings>

#include <QDebug>


MyWebPage::MyWebPage(QObject *parent) :
    QWebPage(parent)
{
}

QString MyWebPage::chooseFile(QWebFrame *originatingFrame, const QString& oldFile)
{
    Q_UNUSED(originatingFrame)
    QWidget* p = qobject_cast<QWidget *>(parent());

    QSettings *webPageSettings = new QSettings( p );

    qDebug() << " Choosing file ... ";

    QString fileName = QFileDialog::getOpenFileName(p, QString::null, webPageSettings->value( "previousFile", oldFile ).toString() );

    webPageSettings->setValue( "previousFile", fileName );

    return fileName;
}

И във главният прозорец:
Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mywebpage.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    MyWebPage *myPage = new MyWebPage(this);
    ui->webView->setPage( myPage );

    ui->webView->setUrl(QUrl("http://prikachi.com/"));

    ui->lineEdit->setText( ui->webView->url().toString() );
}

MainWindow::~MainWindow()
{
    delete ui;
}


QSettings може и по-добре да си ги направиш - като цялостно решение за програмата, не само в тая функция и там може да им се подадат още 200 параметъра и настройки (виж документацията) Иначе и в този вариант работи :)
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
task_struct нямаш си на представа колко много, много съм ти благодарен за помощта! Жив и здрав да си! По този начин никога нямаше да ми дойде на ум да го направя, колкото и логично да ми беше докато четях кода! Пожелавам ти всичко най-хубаво занапред, защото винаги ми помагаш да оправя "бъркотията"!

Успех на изпита! [_]3 [_]3 [_]3
Активен

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Аз изпита го взех, сега остава дипломната. Мисля нещо на Qt :)

П.П. Получил съм и мейл с личното ти съобщение и ти отговорих. Преди да видя, че си отговорил тук :)
« Последна редакция: Jul 02, 2011, 16:19 от task_struct »
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg