Здравствуйте, гость ( Вход | Регистрация )
Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
---|---|---|---|---|---|
18.9.2015, 0:29 | QtCreator почему строка текста, начинающаяся с двух вопросов, подсвечивается серым | Всё просто. Потому что строки, начинающиеся с "??", трактуются как триграфы. Нет, компилятор выдает ошибку. Значит или данная комбинация не является валидным триграфом (после "??" должен идти конкретный символ, какой конкретно -- в википедию), или у компилятора выключена поддержка триграфов, или компилятор вообще триграфы не умеет. Но QtCreator-то подсвечивает такие строки зачем-то. А QtCreator получается в курсе насчёт триграфов и именно строки с ними и подсвечивает. Начнем с того, имеет ли такая строка смысл с позиции С\С++? Имеет. Во всяком случае пока что имеет. Правда уже не во всех компиляторах. А в будущем вообще собираются убрать поддержку этого безобразия, пришедшего из лохматых годов. |
Steklova Olga, ViGOur, | ||
4.9.2015, 20:09 | Сборки под разные системы | Появилась задача, делать сборки для Centos, Debian, Mandriva и ... Я знаю, что есть такая штука как кросс компиляция, но пока вот не знаю, можно откомпилить будучи под Debian, для других ОС семейства линукс, не дебиано подобных? И как бы при этом еще централизованно делать пакеты? (deb, rpm и ...) А то как-то муторно будет с виртуалками... Попробуй глянуть на OpenBuildService. Я сам его не пробовал, но судя по докциям на сайте этот самый OpenBuildService как раз для этого и предназначен. PS: выше Sokoloff говорил про OpenSUSE, это тоже из OpenSUSE, но не сам OpenSUSE, а отдельно build system. |
ViGOur, | ||
11.2.2015, 8:10 | Вопрос по книге Жасмин Бланшет, Марк Саммерфилд - Qt 4. Программирование GUI на C++(2 издание) | В самом начале в книге показывают пример с возрастом и есть такие строчки:«здесь мы задаем расстояние между виджетами 6 пикселей». Но в примере ничего такого нет! Или расстояние задано неявно? IMHO копипейст перевода аналогичной книги Жасмин Бланшет про Qt 3.0, там действительно было такое:
Вот "hbox->setMargin(6);" и "hbox->setSpacing(6);" как раз оно и есть. А в оригинальной книге Жасмин Бланшет про Qt 4.0 такого уже нет:
Переводчику видать лениво было переводить занова, он использовал уже готовый перевод про Qt 3 и просто попытался поменять некоторые места, которые в книге про Qt 4 изменились, да не все заметил. Я всегда говорил, говорю и буду говорить: читайте книжки в оригинале (благо английский это не китайский и не японский, на уровне чтения его выучить -- ну неделя, максимум две), в переводной документации ещё не такие ляпы бывают. |
zanac, | ||
27.10.2014, 11:25 | QtSerialPort | А зачем снова менять и собирать если нужна стандартная? Стандартная пусть всегда на месте остаётся, а модифицированная единовременно собирается для конкретного проекта и поставляется вместе с ним. Я так и сделал из расчёта чтобы как раз стандартную и не менять. |
borune, | ||
27.10.2014, 8:51 | QtSerialPort | Да, скопировать. Но не в папку .lib, а в ту папку, где оказывается твой целевой exe'шник. хм, а почему туда..ты ж сам описал порядок поиска требуемых dll..он в итоге должен дойти до каталога с компилятором, где все dll лежат, и оттуда его взятьНу можно и в ту папку, где лежат все стандартные .dll от Qt. Просто тогда придётся новую dll записывать поверх стандартно-родной и соответственно стандартно-родной уже в оригинале не останется. А так когда кладёшь её в папку с exe'шником и волки получаются сыты (exe использует новую dll) и овцы целы (оригинальную dll из поставки Qt никто не трогает). |
borune, | ||
26.10.2014, 20:48 | QtSerialPort | Да, скопировать. Но не в папку .lib, а в ту папку, где оказывается твой целевой exe'шник. |
borune, | ||
26.10.2014, 19:24 | QtSerialPort | Сначала модифицируем как надо C:\Qt\5.3\Src\qtserialport\src\serialport\qserialportinfo_win.cpp После делаем так:
Вновь собранные debug и release .dll теперь находятся тут:
А .lib пофигу, они подходят и к родным, и к модифицированным. Затем я просто брал отсюда Qt5SerialPort.dll и клал в тот каталог, где лежал откомпилированный пример enumerator.exe Ведь .dll без явного указания пути ищутся сначала в текущем каталоге, если там нет, то в каталоге откуда запущен .exe, если и там нет, то во всех каталогах переменной %PATH%. Т.к. мой лежал там же, где сам enumerator.exe, то родная .dll из C:\Qt\5.3\msvc2010_opengl\bin\Qt5SerialPort.dll не бралась, модифицированная находилась раньше и именно она использавалась при запуске enumerator.exe. Вот как-то так. |
borune, | ||
25.10.2014, 10:30 | QtSerialPort | ahalaj, спасибо большое, но мне хотелось бы все же через QSerialPort сделать. В такие дебри лезть неохота, если честно, но за помощь спасибо тебе. А kuzulis прав! Ах, если имелось ввиду найти все у-ва которые когда-либо были подключены и определены, а теперь являются "скрытыми" hidden (т.к. их например, выдернули из USB) и кстати, их можно отобразить в диспетчере устройств. То это не проблема, достаточно удалить (закомментировать) DIGCF_PRESENT в qserialportinfo_win.cpp и пересобрать. Посмотрел я на код qserialportinfo_win.cpp, там практически то же самое, что у меня. Закоментировал DIGCF_PRESENT
пересобрал C:\Qt\5.3\Src\qtserialport\examples\serialport\enumerator и QSerialPortInfo::availablePorts() стал показывать не только реально подключенные устройства, но и те, которые зарегистрированы в системе, но не подключены в данный момент. Проверял на телефоне Nokia, единственное различие в выводе примера enumerator это то, что он не показывает IMEI телефона когда он не подключен, а так всё то же самое: оригинальный код когда телефон не подключен: оригинальный код когда телефон подключен: модифицированный код с закоментированным DIGCF_PRESENT когда телефон не подключен: модифицированный код с закоментированным DIGCF_PRESENT когда телефон подключен: Так что или модифицировать qserialportinfo_win.cpp, или делать то же самое, но вручную, без QSerialPortInfo, других способов похоже нет. |
borune, | ||
23.10.2014, 22:27 | QtSerialPort | Единственное что лично я могу предложить, это мой маленький кусочек из исходника 10-тилетней давности. Но он на Delphi и естественно никаким QSerialPort там и не пахнет. [...] Нашёл ещё кое-что. Докопался я тогда до этого дела путём наглого и бессовестного реверсинга trial копии LogoManager For Nokia phones. В те времена это был единственный софт помимо родной для телефонов Nokia программы Nokia PC Suite который умел находить виртуальные порты DKU-2 как для подключенных, так и для неподключенных физически телефонов. Весь путь реверсинга я сохранял в C со своими коментариями по ходу чтобы после было легче понять что там к чему. Потом уже переделал на Delphi потому что в продакшн надо было на Delphi отдавать. Так что вот то, из чего после был сделан предыдущий паскальный исходник. Опять не Qt, но думаю что C всё же поближе должно быть чем Pascal. Тут и коментариев чуть больше, и SetupApi.pas не требуется, всё в обычном стандартном Microsoft Windows SDK имеется. Ищутся исключительно виртуальные порты DKU-2 для мобильных телефонов Nokia как и реально подключенные, так и hidden, которые в диспетчере устройств не показаны, но в системе тем не менее есть. Стиль кода, определение ошибок и сами ошибки -- это всё не моё, данная функция отреверсена из LogoManager For Nokia phones практически "один в один", в оригинале не было только никаких вызовов logData(const char *format, ...), а всё остальное оттуда © 2004 год. Раскрывающийся текст
|
borune, | ||
23.10.2014, 21:13 | QtSerialPort | Господа, вопрос актуален, ибо тов. kuzulis мало того, что не понимает русского языка, так еще и дает неверные советы. Как получить список всех когда-либо установленных ком портов средствами QSerialPort? Единственное что лично я могу предложить, это мой маленький кусочек из исходника 10-тилетней давности. Но он на Delphi и естественно никаким QSerialPort там и не пахнет. Мне в то время надо было ловить подключение мобильных телефонов Nokia через интерфейс DKU-2. При каждом подключении создавался виртуальный ком-порт, при первом подключении система его у себя прописывала и запоминала, при отключении этот виртуальный ком-порт из диспетчера задач пропадал, но система созданную запись о нём не забывала и в системе он всё равно присутствовал, правда был hidden пока телефон физически не подключишь. И вот мне надо было ловить и видимые в диспетчере устройства, подключенные реально, и невидимые, но про которые система знала. Использовался SetupApi.pas из JEDI Visual Component Library (в 2004-м году этот юнит назывался SetupApi.pas, сейчас он же называется по-моему JvSetupApi.pas, я с тех пор в эту библиотеку не лазил, как 10 лет назад сделал так и забыл, принцип программиста "работает -- не трожь!" ) Вот моя функция на Delphi, которая этот SetupApi.pas использует. Раскрывающийся текст
Расчитано именно на DKU-2 и именно для мобильных телефонов Nokia, но по аналогии думаю можно разобраться что там к чему. Больше помочь ничем не могу, извини. |
borune, | ||
8.9.2014, 18:25 | как определить тип записывающего устройства? | Если портируемо, то IMHO только QSystemStorageInfo из Qt Mobility API. Ну а если только для винды, то через GetDriveType. Лично я других способов навскидку и не знаю. |
Анна, | ||
10.7.2014, 10:43 | ошибка 0xc000001d при запуске | Абсолютно точно это из-за SSE2. отсюда Цитата As far as I’ve tested, if Qt library is compiled with SSE2 and machine does not have the SSE2 support, your Qt application will crash with “The application failed to initialize properly “0xc000001d” error message. И говорят что надо самому пересобрать Qt с опцией "-sse2", потому что в готовых бинарниках с сайта qt-project эта опция включена и они не будут работать на всяких Атлонах и прочих недопроцессорах.И говорят что надо самому пересобрать Qt с опцией "-sse2", потому что в готовых бинарниках с сайта qt-project эта опция включена и они не будут работать на всяких Атлонах и прочих недопроцессорах. То есть "-no-sse2" конечно, бинарники на сайте собраны как раз с "-sse2", поэтому и не работают на старых процах. |
abc, | ||
Текстовая версия | Сейчас: 22.11.2024, 3:53 |