Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Открытие своего файла в своей программе
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
RazrFalcon
Прога сохраняет к примеру .prm и по нажатии на него открывается моя прога и в ней открывается сразу же и файл.
Как это сделать?
Litkevich Yuriy
Цитата(RazrFalcon @ 1.6.2010, 23:53) *
и по нажатии на него
это что имеется в виду?
RazrFalcon
Цитата(Litkevich Yuriy @ 2.6.2010, 15:08) *
Цитата(RazrFalcon @ 1.6.2010, 23:53) *
и по нажатии на него
это что имеется в виду?

Имеется в виду что при двойном клике по .blend .max .txt и тд и тп открываются соответствующие приложения и соответственно "нажимаемый файл тоже", как это реализовать со своей прогой и своим форматом, да и с другим тоже.
Грубо говоря надо передать проге путь к файлу на который кликаем.
Litkevich Yuriy
Цитата(RazrFalcon @ 2.6.2010, 19:25) *
двойном клике по .blend .max .txt
а клик-то где? В файловом менеджере?
RazrFalcon
Цитата(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) *

Ну я это делал просто через "Открыть с помощью" -> Использовать всегда только эту программу. Прога запустилась но без файла опять же.
Litkevich Yuriy
RazrFalcon, тут нужно с задачей (вопросом) определится точнее:
1) Как открыть файл данных некой программой из командной строки?
2) Как открыть файл данных из самой программы (как пользоваться QFileDialog)?

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

2) Смотри пример %QTDIR%\examples\dialogs\standarddialogs, там ты узнаешь как получить полное имя файла (вместе с путём), это имя передаёшь в конструктор QFile
RazrFalcon
Не то, не то, не то.
В программе я могу сделать, и сделано в принципе, нажал кнопку открылся/сохранился файл (путь указан статически или вводится)
Могу и по типу "Открыть/Сохранить как": нажал кнопку-> открылся диалог-> выбрал файл/путь -> прога открывает/сохраняет файл.
Но вот задача:
Я на рабочем столе, к примеру, имею файл с расширение .primer, допустим. И хочу его открыть. Дважды на нем клацаю и открывается моя прога и в нее передается путь и файл на который я клацал тут же открывается. Без командных строк и тп. При условии конечно что у меня установлена аасоциация с моей прогой, но даже без этого оно спросит какой прогой открыть и я выберу свою.
Вроде бы все. Может что-то еще уточнить?
Пример: клацнул по текстовику и открылся блокнот, КАК он узнал какой файл открыть?
Litkevich Yuriy
Цитата(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
Хмммм... Весьма странно но теперь работает :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 дал полезную ссылку, спасибо.
Только все равно как то странно, по этому пути в реестре пусто ведь, все время, сам проверял.
Но путь пишет и открывает, а мне большего и не нужно.
Все спасибо за еще один шаг вперед.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.