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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование openUrl, открытие файла с неизвестным расширением  (Прочитано 6211 раз)
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« : Февраль 03, 2014, 10:51 »

Доброго времени суток, господа!

Использую QDesktopServices::openUrl(const QUrl & url) для открытия html-лога в браузере по умолчанию. Всё хорошо, но суть в том, что файлу этого лога присваивается нестандартное расширение (от меня не зависит) вида .Ank, где n, k числа. Собственно, раздражает следующее поведение - как вы уже поняли, если файл с конкретным расширением не был открыт в каком-либо браузере до этого момента, то Windows (а это главная платформа в проекте) выбрасывает сообщение, что невозможно открыть файл, и приходится руками выбирать браузер. Процедура не очень утомительная, но пользователей не устраивает.

Собственно, вопрос: используя openUrl, можно ли как-то обойти эту особенность ОСи и сразу открывать через браузер по умолчанию, без этого промежуточного сообщения? Или это придется обходить уже как-то через QProcess?
Записан
Bepec
Гость
« Ответ #1 : Февраль 03, 2014, 11:52 »

пишите html в конце лога.
"имяЛога.Ank.html".

Самое верное решение!
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #2 : Февраль 03, 2014, 14:00 »

Верес, не имею права.
Мой модуль взаимодействует с общей системой, а в ней принят такой принцип создания любых файлов и присваивания им расширений, без разницы что внутри - html, или что-то другое. Расширения такие и точка.
Так что вопрос открыт.

Попутная проблема: В дебаговской сборке  на  if'е студия вылетает  раз через раз  В замешательстве Что очень странно.

Код:
QUrl logUrl("file:///" + path, QUrl::TolerantMode);	
if (QDesktopServices::openUrl(logUrl))
{...}





В релизе проблемы нету.
Записан
Bepec
Гость
« Ответ #3 : Февраль 03, 2014, 14:05 »

Значит платформозависимо создавайте ассоциацию с этим типом файлов. Хотя хз как создавать, если расширения меняются нафиг? Тупизм какой то. Чесстное слово Улыбающийся
Винда каждый раз спрашивать будет ассоциацию!

PS вы поспрашивайте у разрабов, у них скорее всего есть программа специальная для просмотра.

PPS можете плюнуть и переименовывать файл на лету (если разрешено).
Можете тупо копировать его в темповскую папку с нужным расширением и оттуда открывать.  (это мне кажется более подходящим вариантом)
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #4 : Февраль 03, 2014, 14:12 »

Не сказал бы, что тупизм, там на этом принципе очень мощная система построена, на самом деле, n,k - не рандомные числа, они отвечают за определенную индексацию и еще что-то там, я честно говоря до конца не вникал, да и не моё это дело Улыбающийся  Просто применительно к моей задаче такой принцип не очень подходит, да и не рассчитывал, вероятно, никто, когда система создавалась, что в этих файлах будет лежать что-то отличное от записанных цифровых сигналов Подмигивающий А сейчас такая вот задача появилась.

Думаю, конечно, как вариант прикрутить виджет вебкитовский, чтоб пользователь просматривал лог через него, а не через браузер, но хотелось бы конечно не плодить окна от модуля.
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #5 : Февраль 03, 2014, 14:14 »

Да, я тоже думал про какой-нибудь временный файл. Может быть, это выход.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Февраль 03, 2014, 14:20 »

Здесь важно что за платформа. Напр на OSX это вообще не проблема, т.к. файл имеет тип (4 байта) и если он ненулевой то используется ОС'ом до extension. Если неск приложений умеют открывать файл такого типа, то можно установить атрибут creator (тоже 4 байта). По поводу др nix ОС'ов - по крайней мере тип должен быть. Или у Вас Вындоуз?
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #7 : Февраль 03, 2014, 14:22 »

Онли Винда. Никсы где-то в очень далекой и туманной перспективе.
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #8 : Февраль 03, 2014, 14:37 »

А по поводу вылета студии в дебаге у кого какие мысли есть?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #9 : Февраль 03, 2014, 14:46 »

Онли Винда. Никсы где-то в очень далекой и туманной перспективе.
Тогда нужно что-то прописывать в реестре (напр на старте приложения). Да, через WinAPI, подробностей не знаю, но такая возможность есть: напр архиваторы умеют открывать свой "том архива" (с переменным расширением как у Вас).

Ничего, походы в нативняк тоже полезны (чтобы не расслаблялись с OpenUrl)  Улыбающийся
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #10 : Февраль 03, 2014, 14:53 »

в реестр можно писать и через QSettings

можно попробовать запросить браузер по умолчанию (например программа, открывающая файлы html) и запустить его с твоим файлом в качестве параметра
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #11 : Февраль 04, 2014, 08:51 »

Как вариант: перед вызовом openUrl создавать временный html файл с содержимым, выполняющим редирект на требуемый *.Ank файл и в openUrl подставлять именно этот временный файл.
Записан
Zerkin
Чайник
*
Offline Offline

Сообщений: 98


Просмотр профиля
« Ответ #12 : Февраль 04, 2014, 11:12 »

Как вариант: перед вызовом openUrl создавать временный html файл с содержимым, выполняющим редирект на требуемый *.Ank файл и в openUrl подставлять именно этот временный файл.

Сделал как Вы предложили, вполне всё меня устраивает, спасибо!
Спасибо всем за советы, остался только вопрос вылета студии, но я так понимаю это вопрос не данного раздела, да и проблема не в коде, вероятно.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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