Qt. Можно ли в файле .pro указать _текущий_ путь проекта?

Компьютеры программирование программы C++ qt

С помощью Qt-шной либы "QApplication" можно сделать так: "QString s = QApplication::applicationDirPath();". Если писать не в файле .pro. Проверил - работает, вывел на форму "<путь_к_проекту>/debug".

В .pro include'ы странные (по синтаксису отличаются от обычных). С ними или без, QString и QApplication не распознаются как классы, хотя я подозреваю, что и не должны (хотя мне непонятно, зачем вообще тогда нужны include'ы).

В файле проекта подключаю библиотеки (.lib) и прописываю путь "INCLUDEPATH". Насколько я понимаю, это стандартная процедура. Менять путь каждый раз при переносе проекта с компа на комп - баттхерт. Так что думаю, что должна быть предусмотрена функция автоопределения пути.

Итак, есть ли возможность автоматически определять путь проекта из файла проекта (.pro) ?

Примечание:
>> из файла проекта
"в файле"

Примечание:
Еще маленький (или не очень) вопрос.

QString msg1 = "must go to: " + url.toString();
QString msg2 = "Starting to download\r\n" + "URL: " + url.toString();

В чем проблема со второй стрингой? Убрал url.toString(), второй кусок строки опустошил. Не разрешает прибавлять даже "".
Ошибка: "<путь_к_проекту>\mainwindow.cpp:167: ошибка: C2110: '+' : cannot add two pointers"

Бред полный, не разрешает прибавить строку к строке?

Вот так откомпилил:
QString msg2;
msg2.append("Starting to download\r\n");
msg2.append("URL: ");
msg2.append(url.toString());

Примечание:
Могу закрыть вопрос.

1. Не знал как подключать библиотеку не через код. ПКМ на папку-корень проекта (над файлом .pro должна быть) --> Добавить библиотеку --> Новая --> Указывается файл .lib. При этом автоматически добавляется путь к заголовочным файлам в поле ниже. У меня .lib и хедеры лежат в одной папке, так проще.
Так вот, в итоге всего этого добавляется "INCLUDEPATH += $$PWD/libs". "$$PWD", видимо, означает автоопределение путя проекта. Подключение либы привел на случай, если забудутся символы для автоопределения путя.
2. Проблема в перегрузке оператора +. Символы в кавычках воспринимаются компилятором как последовательность байтов. Достаточно сконвертить одну из них в QString: "msg2 = QString("Starting to download\r\n") + "URL: " + url.toString();". Если сконвертить первую - найдет перегруженный оператор + у char, если вторую - у QString. Если не ошибаюсь.

Примечание:
Не знаю, что такое %1).
Ответы:
Во втором случае можно воспользоваться более "красивой" записью.
QString msg2 = QString("Starting to download\r\nURL: %1")
                       .arg(url.toString());
Но это уже дело вкуса.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.