Russian Qt Forum

Программирование => С/C++ => Тема начата: blood_shadow от Июль 28, 2010, 20:45



Название: Запуск приложений с папки
Отправлено: blood_shadow от Июль 28, 2010, 20:45
1. Статически собрал проект(написанный с использованием Qt), который лежит в папке под названием "New1" с 2-мя текстовыми файлами и еще одним exe-шником(который написан на чистом C++). Схема работы всего общего проекта выглядит так: проект написаний с использованием Qt запускает exe-шник который использует 2 текстовых файла для ввода-вывода. Вопрос состоит в следующем - как в Qt указать относительный адрес exe-шника(чтобы искало в папке "New1"  в которой весь проект), а не абсолютный как у меня сделано:
Код:
QString program = "C:\\Program_Files\\Qt\\2010.02\\files\\Gui\\string_val\\val1\\String_v.exe";
    QProcess *process = new QProcess;
    processPointer = process;
    process->start(program);

и как прописать тоже самое для exe-шника, только на чистом С++, вместо этого что есть:
Код:
//open text_file for reading
       ifstream in("C:\\String_v\\input.txt", ios::in | ios::binary);
       //open text_file for writing
       fstream out("C:\\String_v\\output.txt", ios::out | ios::in | ios::trunc | ios::binary);

2. Извиняюсь за глупый вопрос, я так и не понял зачем в Qt подключать файлы ресурсов, просто так чтоб было? или есть какие-то весомые причины?


Название: Re: Запуск приложений с папки
Отправлено: lit-uriy от Июль 28, 2010, 20:55
>>как в Qt указать относительный адрес?
также как и не в Qt. Просто пиши относительный путь и всё


Название: Re: Запуск приложений с папки
Отправлено: lit-uriy от Июль 28, 2010, 20:56
>> я так и не понял зачем в Qt подключать файлы ресурсов
чтобы их использовать, больше их незачем подключать


Название: Re: Запуск приложений с папки
Отправлено: Amigo_sa от Июль 28, 2010, 21:01
1. В классе QCoreApplication есть статический метод applicationDirPath, далее если вам известна структура ваших проектов, можно легко найти путь к другой программе.
В программе, не использующей Qt для каждой платформы доступны свои решения для поиска текущей директории.
Например, для винды.
Код:
#include <windows.h>

....
char path[50];
::GetCurrentDirectory(50,path);
2. Файлы ресурсов позволяют вам объединить кучу разных файлов, картинок, анимации в единое пространство имен. Приложению легче адресовать ресурсы, без использования абсолютного пути к файлам. Разумеется, многим программам ресурсы не нужны, но мастер по умолчанию создает файлы ресурсов. 


Название: Re: Запуск приложений с папки
Отправлено: blood_shadow от Июль 28, 2010, 23:12
1. В классе QCoreApplication есть статический метод applicationDirPath, далее если вам известна структура ваших проектов, можно легко найти путь к другой программе.
В программе, не использующей Qt для каждой платформы доступны свои решения для поиска текущей директории.
Например, для винды.
Код:
#include <windows.h>

....
char path[50];
::GetCurrentDirectory(50,path);

2. Файлы ресурсов позволяют вам объединить кучу разных файлов, картинок, анимации в единое пространство имен. Приложению легче адресовать ресурсы, без использования абсолютного пути к файлам. Разумеется, многим программам ресурсы не нужны, но мастер по умолчанию создает файлы ресурсов. 

1. Огромное спасибо, очень помогло, а главное + к моему опыту  :)
2. Насчет ресурсов вы имеете ввиду эту запись <file alias="cut-img.png">images/cut.png</file> ?


Название: Re: Запуск приложений с папки
Отправлено: Amigo_sa от Июль 29, 2010, 10:07
2. Ну да. Вы привели запись об некотором ресурсе, однако эта запись принадлежит своему пространству имен
Код:
<qresource prefix="/icons"> ...
, что позволяет поддерживать порядок с ресурсами.