Название: Ошибка с KeyPress! Отправлено: karp2005 от Август 03, 2006, 15:06 Может кто сталкивался - не могу понять это баг или моя криворукость. Следующий текст:
if ( e->type() == QEvent::KeyPress ) { ..... } получаем такую ошибку: error: expected unqualified-id before numeric constant error: expected `)' before numeric constant При таком варианте if ( e->type() == 6 ) { // взял значение константы из qevent.h ..... } или таком: if ( e->type() == QEvent::Wheel) { ..... } Всё работает... В заголовках #include <qevent.h> есть...В чём может быть проблемма? Испрльзую Qt 3.3.4 Название: Re: Ошибка с KeyPress! Отправлено: QCasper от Август 03, 2006, 15:49 Цитата: "karp2005" Может кто сталкивался - не могу понять это баг или моя криворукость. Следующий текст: if ( e->type() == QEvent::KeyPress ) { ..... } получаем такую ошибку: error: expected unqualified-id before numeric constant error: expected `)' before numeric constant При таком варианте if ( e->type() == 6 ) { // взял значение константы из qevent.h ..... } или таком: if ( e->type() == QEvent::Wheel) { ..... } Всё работает... В заголовках #include <qevent.h> есть...В чём может быть проблемма? Испрльзую Qt 3.3.4 я в четверке, у меня все ок. Посмотри еще раз, мож где очепятка в коде. Или еще может конфликт какой, хотя пространство имен явно указано... странно конечно. Название: Ошибка с KeyPress! Отправлено: Hordi от Август 03, 2006, 16:25 попробуй пробелы убрать - может невидимый символ какой. Синтаксичекси все верно - у меня аналогичный код в проектах начиная с самых первых версий работает.
Название: Re: Ошибка с KeyPress! Отправлено: Racheengel от Январь 24, 2009, 19:13 У меня такая же проблема при сборке под линуксом (qt 4.3.4 opensource).
тот же код в винде собирается нормально и студией, и креатором. Имхо баг линуксовой сборки кути... Название: Re: Ошибка с KeyPress! Отправлено: Dendy от Январь 24, 2009, 19:35 По теме. Макросы - зло. KeyPress - дефайн в заголовочниках иксов. Каким образом вылез наружу - ищите у себя в коде. Скорее всего потому что заголовочники иксов включены после заголовочников Qt, нужно наоборот. Об этом где-то писалось.
Мысли вслух. Смотрю на даты постов и думаю что неплохо было бы закрыть темы полугодичной давности. Название: Re: Ошибка с KeyPress! Отправлено: lit-uriy от Январь 24, 2009, 22:00 Мысли вслух. Смотрю на даты постов и думаю что неплохо было бы закрыть темы полугодичной давности. ну и зря, а если проблема почти таже? А в исходных постах нет ее решения?Название: Re: Ошибка с KeyPress! Отправлено: Dendy от Январь 24, 2009, 22:06 Цитировать ну и зря, а если проблема почти таже? А в исходных постах нет ее решения? Это скорее исключение, чем правило. Можно в новой теме сделать ссылку на предыдущую. Или попросить открыть её модератором. Название: Re: Ошибка с KeyPress! Отправлено: Racheengel от Январь 24, 2009, 22:46 Дата темы имхо говорит о том, что проблема до сих пор не была пофикшена (да, кути 4.4.3, а не 4.3.4 - перепутал).
Инклуды пытался местами менять - не помогает. Название: Re: Ошибка с KeyPress! Отправлено: Dendy от Январь 24, 2009, 22:51 Так это у вас в собственном коде, я правильно понял? Кют сама собирается нормально? Пример кода можно?
Название: Re: Ошибка с KeyPress! Отправлено: Racheengel от Январь 24, 2009, 23:50 код в общем такой:
Код
Этот свитч компилируется только с закоменченными кодами эвентов. Вообще после гугления понял, что у многих такая лажа и это как то связано с конфликтами с NetWM. Правда, решение предлагают только одно - как собственно и сделано у меня :( Название: Re: Ошибка с KeyPress! Отправлено: pastor от Январь 25, 2009, 00:00 Проблема 100% в приложении. Была уже такая ошибка но с учаснием мотифа. Помогла перестановка инклудов: все кутишные инклуды были поставлены первыми, затем мотифа. Если проект большой, то это давольно кропотливая работа, т.к. проблемное место может находится далеко от файла с ошибкой.
Название: Re: Ошибка с KeyPress! Отправлено: Dendy от Январь 25, 2009, 00:39 2 Racheengel
Да, сам напарывался на эти грабли в прошлом. Вот только уже не припомню что именно я инклудил и как решал. Я вас обманул, заголовочник Qt (например, #include <qtglobal.h>) должен идти самым первым, вот что он содержит в итоге: qt_x11_p.h Код
Он инклудит Xlib.h первым, тем самым предотвращая его препроцессинг при включении в собственном коде из-за ограждающих дефайнов. После этого он андефит горе-макросы, делая им замену в виде перечисления, если в собственном коде нужно будет их использовать. Название: Re: Ошибка с KeyPress! Отправлено: Racheengel от Январь 25, 2009, 02:11 хм, судя по всему - можно попробовать просто заандефить макросы и потом уже заинклудить QtGui...
надо будет попробовать, спасибо за наводку. Название: Re: Ошибка с KeyPress! Отправлено: Alex Custov от Январь 25, 2009, 03:17 достаточно X заголовки включать после Qt-шных. NetWM тут наверное всё-таки ни при чём :)
Название: Re: Ошибка с KeyPress! Отправлено: Racheengel от Январь 31, 2009, 02:35 не, не помогает...
Название: Re: Ошибка с KeyPress! Отправлено: Dendy от Январь 31, 2009, 04:11 Дак понятно что не помогает. Если бы ограждающий дефайн _XLIB_H_ был бы определён - о перестановке инклудов вам бы крикнул этот же еррор:
Код: #error "cannot include <X11/Xlib.h> before this file" Еррор молчит, значит перестановка инклудов не поможет. Ищите по своим системным заголовочникам где ещё определён KeyPress (#define KeyPress). Название: Re: Ошибка с KeyPress! Отправлено: Dendy от Январь 31, 2009, 04:39 Хм. Только что посмотрел в своих собственных заголовочниках. Похоже что еррор молчит потому что заголовочник с #undef KeyPress попросту отсутствует в инсталляции. По всей видимости он используется только для внутренней реализации самой Qt. Значит в своём собственном коде прийдётся делать собственный воркероунд и инклудить его в каждом проблемном файле:
Код
Название: Re: Ошибка с KeyPress! Отправлено: Racheengel от Январь 31, 2009, 15:03 Да уж, костылять так костылять :)))
Хорошо что у меня такой файл тока один... |