Russian Qt Forum
Ноябрь 26, 2024, 21:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QtextEdit и гиперссылка  (Прочитано 2742 раз)
merke
Гость
« : Август 09, 2010, 07:09 »

Всем привет!

Есть текстедит в нем есть гиперссылки на веб ресурсы. Как блин заставить по нажатию на эти ссылки открывать даные сайты в браузере установленным по умолчанию в винде?

И есть ли другой вариант открытия ссылки в браузере не используя функцию QDesktopServices::openUrl() А то при её вызове приложение виснет на секунд 10, а потом отвисает и ссылка открывается в браузере.  Непонимающий

Пробовал ещё вот такой вариант:

Код:
bool open_browser(QWidget* parent, const QString& rUrl)
{
    bool result = false;
    QApplication::setOverrideCursor(Qt::BusyCursor);
#ifdef Q_WS_WIN
    result = int(ShellExecuteW(parent->winId(),
            0,
            rUrl.ucs2(),
            0,
   0,
   SW_SHOWNORMAL)) > 32;
#else
    Q_UNUSED(parent);
    // Try a range of browsers available on UNIX, until we (hopefully)
    // find one that works.  Start with the most popular first.
    
    QProcess process;
    bool process_started = false;
    process.setArguments(QStringList() << "netscape" << rUrl);

    process_started = process.start();
    
    if (!process_started)
    {
        process.setArguments(QStringList() << "mozilla" << rUrl);
        
        process_started = process.start();
    }
    if (!process_started)
    {
        process.setArguments(QStringList() << "firefox" << rUrl);
        
        process_started = process.start();
    }
    if (!process_started)
    {
        process.setArguments(QStringList() << "konqueror" << rUrl);
        
        process_started = process.start();
    }
    result = process_started;
#endif
    QApplication::restoreOverrideCursor();
    
    return result;
}

А он выдает 96 ошибок!? ппц однако
« Последнее редактирование: Август 09, 2010, 07:21 от merke » Записан
crossly
Гость
« Ответ #1 : Август 09, 2010, 09:07 »

QDesktopServices::openUrl() на win делает ShellExecute... что бы не висло попробуй qApp->processEvents().... а ошибки у тебя скорее всего из-за отсутствия инклюдов...
Записан
merke
Гость
« Ответ #2 : Август 09, 2010, 11:36 »

Спасибо! Но как раз я и использовал qApp->processEvents(). Думаю может перекинуть вообще в отдельный поток. Ошибки как раз в инклудах вылезают самая частая ошибка это что то там с типом WORD связано, типо кути не знает такого.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.192 секунд. Запросов: 20.