crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Как реализовать тэг <img> ?
mezmay
  опции профиля:
сообщение 7.10.2010, 13:17
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Задача - написать программу, которая выводила бы на экран google карту.
В google для этого предусмотрен специальный запрос:

http://maps.google.com/staticmap?center=46.714728,-74.998672&zoom=14&size=512x512&maptype=mobile&markers=40.702147,-74.015794,blues%7C40.711614,-74.012318,greeng%7C40.718217,-73.998284,redc&key=MY_KEY


предполагается вставка этой ссылки в тэг <img> на своей странице. При этом на странице будет отображена google карта.

Я создал простой html-файл с требуемым содержанием:

<img src="http://maps.google.com/staticmap?center=46.714728,-74.998672&zoom=14&size=512x512&maptype=mobile&markers=40.702147,-74.015794,blues%7C40.711614,-74.012318,greeng%7C40.718217,-73.998284,redc&key=MY_KEY" >

если открыть это в браузере, то все отлично отображается.

Но мне надо отобразить это в своей программе. Прямо вставить тэг <img> со ссылкой на картинку из интернета нельзя.
Я решил загружать картинку с помощью QHttp. Реализация:
bool cwin::getFile( const QUrl &url )
{
    bool result = false;

    if(url.isValid())
    {

        if(url.scheme() == "http")
        {
            if(!url.path().isEmpty())
            {

                QString localFileName = QFileInfo(url.path()).fileName();
                if(localFileName.isEmpty())
                    localFileName = "img.jpg";

                file.setFileName(localFileName);
                if(file.open(QIODevice::WriteOnly))
                {

                    internet.setHost(url.host(), url.port(80));
                    internet.get(url.path(), &file);
                    internet.close();
                    result = true;
                }
            }
        }
    }

    return result;
}

void cwin::onDone()
{

    file.close();

    close();
}


этот код корректно грузит картинки, если ссылка прямо указывает на jpeg. Например с такого адреса:
http://www.rambler.ru/im/81211543ca677b28a1c8f64bb0b5a975/c220x110/img.beta.rian.ru/images/15179/09/151790915.jpg

Но в случае c google картами не работает. Значит тем, что я написал, нельзя сымитировать обработку тэга <img> в браузерах. Как это правильно сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
mezmay
  опции профиля:
сообщение 7.10.2010, 15:56
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 272
Регистрация: 13.7.2009
Из: Ростов-на-Дону
Пользователь №: 904

Спасибо сказали: 16 раз(а)




Репутация:   1  


Попробовал QWebView:

   
QWebView *view = new QWebView(this);
...
//Задаю в lineEdit ссылку на изображение и выполняю:
QString begin("<img src=\"");
QString end("\">");
QString src(ui.lineEdit->text());

view->setHtml(begin + src + end);
view->show();


грузит только локальные файлы, например C:\1.jpg, из интернета не показывает. Почему?



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.11.2024, 2:40