Russian Qt Forum

Qt => Общие вопросы => Тема начата: merke от Март 20, 2010, 22:35



Название: [Решено]Вопрос по поводу QClipboard
Отправлено: merke от Март 20, 2010, 22:35
Всем привет! В общем пишу Download Manager на кутях, хочу сделать такую фичу, как например в Download Master: копируешь ссылку -> прога определяет, что в буфере находится именно ссылка и начинается скачивание.
Короче пытаюсь реализовать это так:

Код:
const QClipboard *clipboard = QApplication::clipboard();
const QMimeData *mimeData = clipboard->mimeData();

connect(clipboard, SIGNAL(changed(QClipboard::Mode)), SLOT(up_text()));

void SomeClass::up_text()
{
    if (mimeData->hasUrls())
    ...
}

Дальше я буду вытаскивать ссылки из QList и т.д. и т.п. Но столкнулся с проблемой: условие if (mimeData->hasUrls()) вообще не срабатывает хоть тресни, копирую в буфер хоть текст, хоть ссылки, что угодно, всё это определяется как Url.

Что делать? Помогите, добрые люди! А то уже нервы сдают, на таком лёгком и застрял!

Буду очень благодарен за оказанную мне помощь!

С уважением, Александр!



Название: Re: Вопрос по поводу QClipboard
Отправлено: ритт от Март 20, 2010, 23:04
а если
Код:
void SomeClass::up_text()
{
    if (clipboard->mimeData()->hasUrls())
    ...
}
?


Название: Re: Вопрос по поводу QClipboard
Отправлено: merke от Март 21, 2010, 08:32
К сожалению такой вариант не работает. :(


Название: Re: Вопрос по поводу QClipboard
Отправлено: mcrads от Март 21, 2010, 10:33
А если читать из буфера строчку и сравнивать ее первые символы с http:// или ftp:// и пр. началами ссылок? а еще можно читать последние символы и сравнивать с *.* чтобы не скачивать сайты да страницы.


Название: Re: Вопрос по поводу QClipboard
Отправлено: merke от Март 21, 2010, 11:23
Спасибо! Блин ведь была вчера такая идея и забыл)


Название: Re: [Решено]Вопрос по поводу QClipboard
Отправлено: merke от Март 21, 2010, 13:18
Кому нибудь может пригодится:

Код:
const QClipboard *clipboard = QApplication::clipboard();
connect(clipboard, SIGNAL(changed(QClipboard::Mode)), SLOT(up_text()));

QList<QString> ftype;
ftype << "rar" << "mp3" << "jpeg" << "jpg";

void SomeClass::up_text()
{
QMutableListIterator<QString> it(ftype);
if (clipboard->text().contains("http")){
    while (it.hasNext()){
        if (clipboard->text().contains(it.next())){
            ui->lineEdit->setText(clipboard->text());
            ui->listWidget->addItem(ui->lineEdit->text());
            this->append(ui->lineEdit->text());
        }
    }
}
}