Название: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 20, 2012, 22:47 Всем привет!
Задумка в следующем: добавил новый пункт контекстного меню по этой http://habrahabr.ru/post/79443/ (http://habrahabr.ru/post/79443/) статье. Нужно написать простенькую и консольную программку, которая будет запускаться через добавленный пункт контекстного меню. При запуске программа должна определить, от куда произошёл её запуск, т.е., предположим, пользователь выбрал новый пункт контекстного меню в "C:\Users", программа должна определить этот путь. Подскажите, как это можно сделать? Как определить путь в таком случае? Благодарю. Название: Re: Контекстное меню (Windows) - путь Отправлено: mutineer от Ноябрь 20, 2012, 23:25 QString QDir::currentPath () проверял?
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 21, 2012, 00:10 Цитировать QString QDir::currentPath () В таком случае будет получен путь, по которому находится сам исполняемый файл (exe'шник), а нужно узнать путь, от куда пользователь вызвал контекстное меню.Например, exe'шник может находится в C:\Program Files\Some program\pr.exe А пользователь вызвал контекстное меню из другой директории, например, D:\Some dir. Программа при запуске должна определить этот путь, в данном примере - это "D:\Some dir". Название: Re: Контекстное меню (Windows) - путь Отправлено: mutineer от Ноябрь 21, 2012, 00:36 Цитировать QString QDir::currentPath () В таком случае будет получен путь, по которому находится сам исполняемый файл (exe'шник), а нужно узнать путь, от куда пользователь вызвал контекстное меню.Например, exe'шник может находится в C:\Program Files\Some program\pr.exe А пользователь вызвал контекстное меню из другой директории, например, D:\Some dir. Программа при запуске должна определить этот путь, в данном примере - это "D:\Some dir". Я понял что тебе нужно, но у меня нет возможности проверить что вернет currentPath при запуске из контекстного меню. currentPath возвращает не директорию с бинарником программы, а директорию, которая была текущей при запуске. А это не всегда одно и то же Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 21, 2012, 01:46 а в argv не сидит нужный путь?
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 21, 2012, 15:56 QString QDir::currentPath () проверял? Да, это сработало.Всем спасибо за помощь! Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 21, 2012, 20:07 Чтобы не создавать ещё одну тему, спрошу здесь.
Суть этой (первой) программки в том, чтобы определять, от куда она была запущена через контекстное меню. Программка определила путь, записала его (путь) в файл и завершилась, всё просто. Файл каждый раз открывается на перезапись. Задача второй программы заключается в том, чтобы при записи нового пути, тут же этот путь из файла получить. Планирую запустить новый поток, который будет через ...скажем каждую секунду проверять файл и если в файле записан новый путь, поток просигналит об этом основному потоку. Возможно, есть способы по лучше, подскажите, как лучше реализовать такой обмен данными? Название: Re: Контекстное меню (Windows) - путь Отправлено: Igors от Ноябрь 21, 2012, 20:36 При запуске программа должна определить, от куда произошёл её запуск, т.е., предположим, пользователь выбрал новый пункт контекстного меню в "C:\Users", программа должна определить этот путь. Может я чего-то не понял. Ну вот напр пользователь сидит в консоли и ввел руками полный путь. Потом сменил текущий каталог и опять ввел полный путь. В чем тогда смысл Вашего определения? Получить текущий каталог - и что с того?Вообще такого рода "системные" задачи (завязанные на специфику) - на мой взгляд пустая трата времени. Все уходит в познание/изучение той "специфики" - а толку чуть. Хотите потренироваться - я Вам дам задачку :) Название: Re: Контекстное меню (Windows) - путь Отправлено: Bepec от Ноябрь 21, 2012, 21:16 AlphaGh0St напишите что вы хотите получить в конце. Вашу конечную цель опишите.
Возможно вам нужно что-то уже готовое и уже кем то реализованное? Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 21, 2012, 21:54 Если "в двух словах", то нужно следующее: одна программа записывает в файл какую-либо строку, вторая программа (желательно, тут же) считывает эту строку из файла. Всё.
Проблема заключается в том, что вторая программа должна определить, был ли файл перезаписан, и если "да", то незамедлительно считать данные из файла. Первое, что приходит в голову, это запустить дополнительный поток, который будет через определённый интервал времени (1 сек) проверять атрибуты файла (дату последней модификации). Если файл был перезаписан, скажем, более, чем 3 секунды назад, просигналить об этом. Но, возможно, есть лучшее решение. Тренировочных задач и готовых решений не надо, благодарю. Название: Re: Контекстное меню (Windows) - путь Отправлено: Igors от Ноябрь 21, 2012, 22:06 Если "в двух словах", то нужно следующее: одна программа записывает в файл какую-либо строку, вторая программа (желательно, тут же) считывает эту строку из файла. Всё. Это подходит под логику семафора. Напр приложение запущено и и ему надо отловить были ли еще попытки запуска того же приложенияПроблема заключается в том, что вторая программа должна определить, был ли файл перезаписан, и если "да", то незамедлительно считать данные из файла. Первое, что приходит в голову, это запустить дополнительный поток, который будет через определённый интервал времени (1 сек) проверять атрибуты файла (дату последней модификации). Если файл был перезаписан, скажем, более, чем 3 секунды назад, просигналить об этом. Но, возможно, есть лучшее решение. Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 21, 2012, 22:07 почему нельзя «сообщить» (через inter-process communication) другой программе эту строку напрямую, без всяких файлов? а другая программа просто сверит новые данные с текущими.
Название: Re: Контекстное меню (Windows) - путь Отправлено: Bepec от Ноябрь 21, 2012, 22:34 Вы не цель сообщили, а ту часть, про которую хотите спросить.
Цель у вас какая? Взаимодействие между приложениями? Работа с файлами? Отслеживание изменения файла? Клиент аськи? Операционная система? Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 21, 2012, 22:57 почему нельзя «сообщить» (через inter-process communication) другой программе эту строку напрямую, без всяких файлов? а другая программа просто сверит новые данные с текущими. Отличная идея!! Подскажите, как это сделать? Что можно почитать на эту тему? Программы под винду, обе на Qt.Цель: программа копирования файлов. Пользователь в нужном месте кликает ПКМ, в контекстном меню выбирает пункт типа "Установить флаг копирования". Затем в саму программу копирования (в виде очереди) можно добавлять файлы и эти файлы будут копироваться туда, где установлен флаг. Планировалось сделать так, в реестр был добавлен новый пункт контекстного меню (ссылка на статью в посте №1). При выборе этого пункта меню, запускается маленькая консольная программа (только окно консоли не появляется), которая определяет путь и записывает его в файл. Вторая программа (копирования) определяет, что файл был изменён, забирает от туда новый путь и ожидает файлы на очередь. Идея с межпроцессорным взаимодействием мне нравится больше. Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 21, 2012, 23:21 я в этом не силен, но по идее тебе нужен QLocalSocket или QProcess
а вообще, если цель этой консольной программы — лишь подсунуть правильный путь, то почему нельзя этот путь направлять сразу в основную программу из контекстного меню проводника? Название: Re: Контекстное меню (Windows) - путь Отправлено: Bepec от Ноябрь 22, 2012, 06:56 Я бы вам идею подрезал, ооох как подрезал :)
Начнём - убираем две программы, оставляем одну. Второе - добавляем 2 пункта в контекстное меню проводника с разными параметрами коммандной строки. Третье - вместо гипотетического файла пишем данные в реестр/файл настроек вашей программы. Что имеем? Одна программа с разной обработкой коммандных строк. Одна обработка записывает строку в реестр/файл. Вторая копирует файло. Вот и всё. К тому же насколько я помню - в параметры командной строки при вызове контекстного меню вся нужная информация передаётся. Начиная от текущего каталога и заканчивая файлом на котором щёлкнули. Название: Re: Контекстное меню (Windows) - путь Отправлено: Igors от Ноябрь 22, 2012, 09:17 Приложение-приемник создает QSystemSemaphore и запускает нитку которая висит на нем (acquire). Приложение для выбора целевого фолдера создает QSystemSemaphore с тем же именем и делает ему release. В результате приемник снимается с семафора, как бы получает сигнал "целевой фолдер изменен". Сам путь проще всего передать через QSharedMemory
Название: Re: Контекстное меню (Windows) - путь Отправлено: Bepec от Ноябрь 22, 2012, 09:52 Как говорится - зачем 2 программы? достаточно и одной как бы :) А уже внутри одной можно творить всё что угодно.
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 22, 2012, 12:27 Начнём - убираем две программы, оставляем одну. если я правильно понял, Вы предлагаете программе копирования передавать параметры в качестве входных аргументов (argv)?Второе - добавляем 2 пункта в контекстное меню проводника с разными параметрами коммандной строки. проблемка в том, что программа копирования может быть запущена на долгое время, а за это время, флаг может много раз измениться. Нужно изменять флаг во время работы программы копирования. Цитировать Третье - вместо гипотетического файла пишем данные в реестр/файл настроек вашей программы. в реестр лучше лишний раз не лазить, т.к. в win 7 для доступа к реестру требуются права админа. А если программа каждый раз будет надоедать пользователю запросами (выполнить от имени админа), это очень быстро надоест.как правило, программа инсталлируется в C:\Program files , файл настроек лежит там-же, и для его изменения так же требуются права админа. тут я вышел из ситуации так: по переменной окружения TMP определяю каталог временных файлов пользователя, там создаю файлик и туда же пишу путь флага. Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 22, 2012, 12:31 а вообще, если цель этой консольной программы — лишь подсунуть правильный путь, то почему нельзя этот путь направлять сразу в основную программу из контекстного меню проводника? Это было бы кстати, но вот как это сделать?Bepec, если я правильно понял, предложил передавать путь в качестве входного аргумента, но так, к сожалению, сделать не получится. Название: Re: Контекстное меню (Windows) - путь Отправлено: mutineer от Ноябрь 22, 2012, 12:32 как правило, программа инсталлируется в C:\Program files , файл настроек лежит там-же, и для его изменения так же требуются права админа. Это порочная, исторически сложившаяся практика. Файлик настроек должен лежать в домашней директории пользователя Название: Re: Контекстное меню (Windows) - путь Отправлено: Bepec от Ноябрь 22, 2012, 12:43 Кхм. Пара слабых моментов у вас, AlphaGh0st.
1) Изменения в реестре в разделе настроек программ, НЕ требуют прав админа. Права нужны только для системных секций. 2) У вас программа копирования может единомоментно менять место копирования файлов? Т.е. полфильма на старый флаг, полфильма на новый (фильм для примера). 3) У вас цель конечная какая? КОНЕЧНАЯ. Не "две программы бла бла бла", а "приложение, которое копирует файлы из папки пользователя в папку с указанным флагом непрерывно 24 часа в сутки, отрывая кусок за куском у исходных файлов и кладя их в папку с флагом." 4) Озвучьте наконец свою идею блин. Результат, который сделает вас создателем гениальной программы. Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 22, 2012, 13:44 а вообще, если цель этой консольной программы — лишь подсунуть правильный путь, то почему нельзя этот путь направлять сразу в основную программу из контекстного меню проводника? Это было бы кстати, но вот как это сделать?Bepec, если я правильно понял, предложил передавать путь в качестве входного аргумента, но так, к сожалению, сделать не получится. Название: Re: Контекстное меню (Windows) - путь Отправлено: Igors от Ноябрь 22, 2012, 13:46 тут я вышел из ситуации так: по переменной окружения TMP определяю каталог временных файлов пользователя, там создаю файлик и туда же пишу путь флага. Зачем связываться с временными файлами и быть зависимым от платформы? Да и циклическая проверка а не изменился ли файл хорошего впечатления не производитНазвание: Re: Контекстное меню (Windows) - путь Отправлено: Bepec от Ноябрь 22, 2012, 14:27 Igors в связи с названием темы, ваше замечание насчёт привязки к платформе... Ну вы поняли :)
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 22, 2012, 15:44 4) Озвучьте наконец свою идею блин. Результат, который сделает вас создателем гениальной программы. Да, собственно, ничего гениального здесь нет.Программа копирования файлов. Через контекстное меню пользователь устанавливает флаг. В самой программе копирования есть очередь копирования, после установки флага, пользователь добавляет в эту очередь файлы и они копируются туда, где установлен флаг. Если в процессе копирования флаг изменился, то копируемый файл будет докопирован по старому пути, а все последующие файлы будут копироваться по новому пути. Работать программа будет столько, сколько потребуется пользователю. Пользователь может за 5 минут скопировать нужные файлы и закрыть программу. А может копировать их часами. QtSingleApplication в помощь. Щёлкнул на команду меню в проводнике — совершается попытка запустить твоё приложение — отсылаешь (QtSingleApplication это позволяет) QDir::currentPath() существующей копии. не уверен, что этот метод подойдёт, т.к. при каждой новой установке флага, программа копирования будет запускаться заново.а это значит, что придётся добавлять файлы в очередь копирования заново. Зачем связываться с временными файлами и быть зависимым от платформы? ...хм...возможно, я чего-то не понял, но почему появляется зависимость от платформы?файлик хранится во временной директории, путь к которой извлекается из переменной окружения TMP. в Винде эта переменная укажет один путь, а в Линуксе - другой. Цитировать Да и циклическая проверка а не изменился ли файл хорошего впечатления не производит согласенНазвание: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 22, 2012, 16:06 Я как думал: Из контекстного меню можно запустить программу. Так почему бы не написать маленькую, вспомогательную программку, которая и будет запускаться, а при запуске передавать программе копирования путь к флагу.
Идея с передачей пути через файл, не самая лучшая. Передавать путь к флагу в качестве входного аргумента, видимо, тоже не вариант. Идея с межпроцессорным взаимодействием мне понравилась гораздо больше. Документацию по вышесказанным классам найти не проблема, но почему-то не нашёл примера использования. Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 22, 2012, 16:10 Цитировать не уверен, что этот метод подойдёт, т.к. при каждой новой установке флага, программа копирования будет запускаться заново. с чего вдруг она будет запускаться заново, если QtSingleApplication не даст новой копии появиться, а существующая сделает что надо с пришедшим путём?Название: Re: Контекстное меню (Windows) - путь Отправлено: Igors от Ноябрь 22, 2012, 17:08 Идея с межпроцессорным взаимодействием мне понравилась гораздо больше. У Вас совершенно стандартная ситуация - одно приложение должно передать "немного данных" другому. Столь же стандартное решение - обмен через QSharedMemory, обычно с использованием семафоровДокументацию по вышесказанным классам найти не проблема, но почему-то не нашёл примера использования. Оба приложения создают QSharedMemory с одним и тем же ключом, в результате оба могут читать/писать физически тот же блок памяти. Синхронизация - через семафор (см выше), но если так нравится - можно в цикле читать (все лучше чем файл) Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 22, 2012, 17:43 я всё равно не понимаю зачем в данном случае нужно 2 приложения
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 22, 2012, 19:20 Как говориться "Всё гениальное-просто".
Сначала попробую сделать через QtSingleApplication, если не получится, то через QSharedMemory. Не много погуглив, выясняется, что QtSingleApplication надо скачивать отдельно и добавлять. Вот здесь http://code.google.com/p/cupsfilter/source/browse/trunk/vp_plugins/qt_single_apps/?r=948 (http://code.google.com/p/cupsfilter/source/browse/trunk/vp_plugins/qt_single_apps/?r=948) нашёл файлы этого проекта. Брать файлы от туда или где-то ещё? В документации к классу есть пример: Код: // Single instance Получается, можно сделать следующим образом: главное окно программы задаётся классом QMainWindow, можно добавить метод setDestPath(const QString &p); , который и будет получать новый путь флага и обновлять его в программе. А передавать этот новый путь можно в качестве первого аргумента (argv[1]). Тогда решение будет следующим: Код: // Single instance Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 22, 2012, 22:05 нет, неверно. когда app.isRunning() == true, это значит, что существует другая копия программы, у которой есть свой QMainWindow mw, а написанным кодом ты обращаешься к новому главному окну, а не к существующему.
вместо mw.setDestPath(argv[1]) тебе нужно писать app.sendMessage(QDir::currentPath()) — это отправит путь существующей копии приложения, которая испустит сигнал messageReceived, который и нужно ловить: Код в данном случае this является отправителем, потому что ИМХО проще и лучше унаследоваться от QtSingleApplication и писать этот коннект внутри класса. но в принципе можно и прямо в main: Код
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 22, 2012, 22:07 Да, верно, эт я не доглядел.
А от куда лучше QtSingleApplication взять? Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 22, 2012, 22:10 с фтп Qt: ftp.qt.nokia.com/qt/solutions/lgpl/qtsingleapplication-2.6_1-opensource.zip (или .tar.gz версию)
Название: Re: Контекстное меню (Windows) - путь Отправлено: Kurles от Ноябрь 23, 2012, 00:53 Если "в двух словах", то нужно следующее: одна программа записывает в файл какую-либо строку, вторая программа (желательно, тут же) считывает эту строку из файла. Всё. для этой задачи QFileSystemWatcher спасет отца русской демократии без всяких доп. потоков ) Без использования Qt для этого тоже есть инструменты, зависит от платформы, например для linux - epool + inotify, для винды не знаю, не занимался.Проблема заключается в том, что вторая программа должна определить, был ли файл перезаписан, и если "да", то незамедлительно считать данные из файла. Первое, что приходит в голову, это запустить дополнительный поток, который будет через определённый интервал времени (1 сек) проверять атрибуты файла (дату последней модификации). Если файл был перезаписан, скажем, более, чем 3 секунды назад, просигналить об этом. Но, возможно, есть лучшее решение. Тренировочных задач и готовых решений не надо, благодарю. Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 26, 2012, 17:39 Возник нубский вопрос.
Скачал ftp.qt.nokia.com/qt/solutions/lgpl/qtsingleapplication-2.6_1-opensource.zip (http://ftp.qt.nokia.com/qt/solutions/lgpl/qtsingleapplication-2.6_1-opensource.zip) и распаковал. Выполнил configure.bat, qmake и make (Через QtCreator). ...а что дальше? Ещё ни разу не доводилось собирать компоненты в ручную. Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 26, 2012, 18:17 там ничего собирать не нужно. просто берёшь исходники и добавляешь себе в проект.
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 26, 2012, 19:36 Добавил, но компиляция не проходит, появляется аж 83 ошибки.
Сам QtCreator все файлы видит, обьект класса создаёт, методы видит, но не компилирует. Уже всё проверил, и qmake несколько раз перезапускал, толку нет. Ошибки вот такие: Код: qtsingleapplication.h:47: ошибка: QtGui/QApplication: No such file or directory Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 26, 2012, 19:40 поубирай префиксы
Название: Re: Контекстное меню (Windows) - путь Отправлено: Igors от Ноябрь 26, 2012, 19:49 Вполне возможно что в данном случае QtSingleApplication ничуть не хуже обмена данными между 2 приложениями, а может и просто лучше (от задачи зависит). Однако этот путь сводится к "прикручиванию" чужих исходников, не считая нескольких строк их использования. Развивается умение "собирать", "чего-то достать", попользоваться и.т.п. Это также необходимо и сейчас без этого не проживешь. Но все же это ближе к "продвинутому пользователю" чем к "программисту" :)
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 26, 2012, 20:04 Поубирал префиксы, ничего не изменилось(
Файлы в проект включены, вроде всё нормально, не пойму, что упустил... Сперва попробую через QtSingleApplication, не получится, тогда вернусь к первоначальной идеи (2 проги + IPC) Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 27, 2012, 10:11 Создал тестовый проект, подключил все файлы, результат тот же, куча ошибок.
Посмотрите, пожалуйста, подскажите, что не так? Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 27, 2012, 10:18 ну а модуль network кто за тебя будет подключать? Пушкин? :) можно ж было в любом примере подсмотреть.
Название: Re: Контекстное меню (Windows) - путь Отправлено: Igors от Ноябрь 27, 2012, 10:35 Я использую Xcode. Создал проект через qmake, ошибки линковки. Добавил в проект QtNetwork framework, все норм, работает, показывает ARE RUNNING. Правда второй запуск надо делать из отладчика или из консоли, просто так "вторую копию" не запустить - но это специфика OSX
kambala, я помню Вы с этим разбирались, почему так много всего наворочено в QtSingleApplication? Ну просто отследить достаточно неск строк опять-таки с QSharedMemory. Спасибо Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 27, 2012, 10:44 в подробности реализации я не вдавался, но там используется QLocalSocket для «общения» с существующей копией.
для данной задачи создавать отдельное консольное приложение (пусть невидимое и живёт всего ничего), которое практически ничего не делает — избыточно по-моему. Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 27, 2012, 15:45 Подключил модуль network, qmake выполнил, пересобрал проект, ничего не изменилось.
kambala, у Вас после подключения network проект скомпилировался? Можете сюда проект выложить? Название: Re: Контекстное меню (Windows) - путь Отправлено: Bepec от Ноябрь 27, 2012, 15:50 У меня странное чуйство, что у меня всё соберётся с 1 попытки, но я пока помолчу и продолжу наблюдать :)
Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 27, 2012, 16:47 Подключил модуль network, qmake выполнил, пересобрал проект, ничего не изменилось. 1. скачал приложенный к посту проектkambala, у Вас после подключения network проект скомпилировался? Можете сюда проект выложить? 2. распаковал, открыл в креаторе, нажал «построить» (молоток в левом нижнем углу), получил тонну ошибок 3. открыл .pro, дописал network в QT += 4. снова нажал «построить» — завершилось успешно Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 27, 2012, 17:09 Не поверите, делал тоже самое, вот файл проекта:
Код: #------------------------------------------------- Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 27, 2012, 18:26 очисти проект и руками поудаляй все остатки от сборки, потом собери.
так а ошибки по-прежнему связаны с QLocalSocket и подобным? Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 27, 2012, 19:28 Всё очистил, пересобрал, опять ошибки.
Ошибки не только с QLocalSocket связаны, там много чего, жалуется на всё, что не лень. Код: qtsingleapplication.h:82: ошибка: 'QString' does not name a type Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 27, 2012, 20:29 а другие проекты (без qtsingleapplication) компилируются? складывается впечатление, что не задана QTDIR.
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 27, 2012, 21:55 да, другие проекты компилируются
Название: Re: Контекстное меню (Windows) - путь Отправлено: kambala от Ноябрь 27, 2012, 22:47 если используешь вижуал студию (именно среду, а не просто компилятор), то там возникает странный баг при добавлении qtsingleapplication в проект. как с ним справиться я описывал в теме по qtsingleapplication. но в креаторе никаких проблем быть не должно. даже и не знаю что ещё подсказать…
Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 28, 2012, 12:49 Действительно, странно.
Создал новый проект, перенёс исходники туда, и всё замечательно собралось с первого раза. Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 28, 2012, 14:56 Не могу поверить, я просто не могу в это поверить!
Перед сборкой очистил проект, выполнил qmake, и опять всё сломалось! Да что ж такое... Название: Re: Контекстное меню (Windows) - путь Отправлено: AlphaGh0St от Ноябрь 28, 2012, 17:03 Странность за странностью.
Как решил эту проблему: 1) удалил из проекта все файлы QtSingleApplication 2) из .pro файла удалил network 3) в main.cpp закомментировал все упоминания о QtSingleApplication 4) запустил сборку, проект собрался нормально 5) добавил в .pro файл network 6) добавил в проект файлы QtSingleApplication 7) пересобрал - всё норм. Всё заработало, как надо, проблем не наблюдается. Всем спасибо за помощь, особенно kambala! )) |