crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Открытие своего файла в своей программе
RazrFalcon
  опции профиля:
сообщение 1.6.2010, 19:53
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Прога сохраняет к примеру .prm и по нажатии на него открывается моя прога и в ней открывается сразу же и файл.
Как это сделать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.6.2010, 15:08
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(RazrFalcon @ 1.6.2010, 23:53) *
и по нажатии на него
это что имеется в виду?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.6.2010, 15:25
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Цитата(Litkevich Yuriy @ 2.6.2010, 15:08) *
Цитата(RazrFalcon @ 1.6.2010, 23:53) *
и по нажатии на него
это что имеется в виду?

Имеется в виду что при двойном клике по .blend .max .txt и тд и тп открываются соответствующие приложения и соответственно "нажимаемый файл тоже", как это реализовать со своей прогой и своим форматом, да и с другим тоже.
Грубо говоря надо передать проге путь к файлу на который кликаем.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.6.2010, 16:06
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(RazrFalcon @ 2.6.2010, 19:25) *
двойном клике по .blend .max .txt
а клик-то где? В файловом менеджере?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 2.6.2010, 16:29
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

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




Репутация:   9  


Это что ли?
Как ассоциировать файлы со своим приложением в Windows
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.6.2010, 16:32
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Цитата(Litkevich Yuriy @ 2.6.2010, 16:06) *
Цитата(RazrFalcon @ 2.6.2010, 19:25) *
двойном клике по .blend .max .txt
а клик-то где? В файловом менеджере?

Ну да, в проводнике или на рабочем столе хоть. Ну даже пусть в тотал командере, которым в принципе не пользуюсь.
QFileDialog или как-то так это работает, нажал кнопку, выбрал файл и он открылся, а вот как впихнуть в QFile путь к файлу открытому мной, так скажем. Все остальные мало-мальские проги это делают.
Соответствие ставить пробовал, толку 0. Просто прога по нажатии открывается и все, без файла.

Цитата(MoPDoBoPoT @ 2.6.2010, 16:29) *

Ну я это делал просто через "Открыть с помощью" -> Использовать всегда только эту программу. Прога запустилась но без файла опять же.

Сообщение отредактировал RazrFalcon - 2.6.2010, 16:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.6.2010, 16:53
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


RazrFalcon, тут нужно с задачей (вопросом) определится точнее:
1) Как открыть файл данных некой программой из командной строки?
2) Как открыть файл данных из самой программы (как пользоваться QFileDialog)?

Ответы
1) файл данных передаётся как аргумент командной строки программы, этот аргумент можно получить из функции main или через QCoreApplication::args()

2) Смотри пример %QTDIR%\examples\dialogs\standarddialogs, там ты узнаешь как получить полное имя файла (вместе с путём), это имя передаёшь в конструктор QFile
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.6.2010, 17:31
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Не то, не то, не то.
В программе я могу сделать, и сделано в принципе, нажал кнопку открылся/сохранился файл (путь указан статически или вводится)
Могу и по типу "Открыть/Сохранить как": нажал кнопку-> открылся диалог-> выбрал файл/путь -> прога открывает/сохраняет файл.
Но вот задача:
Я на рабочем столе, к примеру, имею файл с расширение .primer, допустим. И хочу его открыть. Дважды на нем клацаю и открывается моя прога и в нее передается путь и файл на который я клацал тут же открывается. Без командных строк и тп. При условии конечно что у меня установлена аасоциация с моей прогой, но даже без этого оно спросит какой прогой открыть и я выберу свою.
Вроде бы все. Может что-то еще уточнить?
Пример: клацнул по текстовику и открылся блокнот, КАК он узнал какой файл открыть?

Сообщение отредактировал RazrFalcon - 2.6.2010, 17:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 2.6.2010, 17:58
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(RazrFalcon @ 2.6.2010, 21:31) *
Без командных строк и тп
на самом деле всё работает через командную строку

Цитата(RazrFalcon @ 2.6.2010, 21:31) *
КАК он узнал какой файл открыть?
в реестре записано
HKEY_CLASSES_ROOT\.txt
-- (по умолчанию) = txtfile

HKEY_CLASSES_ROOT\txtfile
-- (по умолчанию) = Текстовый документ

HKEY_CLASSES_ROOT\txtfile\shell\open\command
-- (по умолчанию) = %SystemRoot%\system32\NOTEPAD.EXE %1

И, как видишь, командная строка, аргумент командной строки - шаблон, вместо которого подставится имя файла
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 2.6.2010, 18:24
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

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




Репутация:   212  


Хмммм... Весьма странно но теперь работает :huh:
QSettings reg("HKEY_CLASSES_ROOT", QSettings::NativeFormat);
QFile file(reg.value("/MyProg.mpf/shell/open/command/.").toString());
if (!file.open(QIODevice::ReadWrite | QIODevice::Text))
   return;

MoPDoBoPoT дал полезную ссылку, спасибо.
Только все равно как то странно, по этому пути в реестре пусто ведь, все время, сам проверял.
Но путь пишет и открывает, а мне большего и не нужно.
Все спасибо за еще один шаг вперед.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 1.12.2024, 13:04