АК
Александр КузьминыхJune 16, 2017, 3:43 a.m.
QEvent. Переопределение метода event().
Добрый день, Евгений.
Сейчас пишу ПО, которая работает с видеокамерой. Программный интерфейс видеокамеры написан на winapi. Получается я в Qt использую winapi-функции, хендлеры и тд. Как я понял, у каждого виджета есть свой WId, который для Windows платформы является HWND. Так же узнал, что этот WId может измениться в ходе работы программы. На изменение WId есть событие QEvent::WinIdChange. У меня вопрос: как обработать это событие?
1ый вариант.
bool MainWindow::event(QEvent *event) { if(event->type() == QEvent::WinIdChange) { g_id = winId(); qDebug() << "WinIdChange"; } return QMainWindow::event(event); }В строке return QMainWindow::event(event); я передаю событие на дальнейшую обработку? Мне не понят этот момент.
2ой вариант.
bool MainWindow::event(QEvent *event) { if(event->type() == QEvent::WinIdChange) { g_id = winId(); qDebug() << "WinIdChange"; return true; } else { return false; } }Возвращаемое значение означает обработано ли данное событие или нет. В случае false, событие будет передано дальше на обработку.
Я правильно понял? И какой вариант правильный?
Заранее благодарю за ответ. ;)
![We recommend hosting TIMEWEB](/media/technical_storage/timeweb-120-90.jpg)
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.Do you like it? Share on social networks!
Lz
- Liza zhegalova
- June 23, 2024, 9:40 p.m.
C ++ - Test 004. Pointers, Arrays and Loops
- Result:70points,
- Rating points1
ВМ
- Вета Миличенкова
- June 23, 2024, 3:25 p.m.
C++ - Test 001. The first program and data types
- Result:80points,
- Rating points4
Last comments
Qt Linux - Lesson 001. Autorun Qt application under Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Lesson 007. Working with ICMP Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий КононенкоFeb. 5, 2024, 9:50 a.m.
![EVA](/media/cache/4b/62/4b6257bdb5dfaf404a6571a1ba7910ef.webp)
EVADec. 25, 2023, 6:30 p.m.
Boost - static linking in CMake project under Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Lesson 056. Connecting the Boost library in Qt for MinGW and MSVC compilers Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Now discuss on the forum
![BlinCT](/media/cache/ae/4a/ae4a65663ccbf14aec7b31a6df3f29a6.webp)
BlinCTJune 25, 2024, 8 a.m.
![Evgenii Legotckoi](/media/cache/5a/49/5a499b0c8eb5e79957fec0aea35e5d98.webp)
Evgenii LegotckoiJune 24, 2024, 10:11 p.m.
![BlinCT](/media/cache/ae/4a/ae4a65663ccbf14aec7b31a6df3f29a6.webp)
BlinCTMay 5, 2024, 12:46 p.m.
![Evgenii Legotckoi](/media/cache/5a/49/5a499b0c8eb5e79957fec0aea35e5d98.webp)
Evgenii LegotckoiMay 2, 2024, 9:07 p.m.
![IscanderChe](/media/cache/c6/bd/c6bd48d511a45551f81980d558b60c04.webp)
IscanderCheApril 30, 2024, 11:22 a.m.
(ответ не по теме)
Зачем же вы себя привязываете к платформе эти ... winapi?)
Делайте без привязки, вам зачтется потом) карма и все такое
В документации на метод QObject::event(QEvent *event) сказано, что этот метод должен возвращать true на все случаи event`ов, которые были обработаны в методе, в противном случае должен вызываться метод базового класса. То есть правильнее будет делать так:
BlinCT, программный интерфейс камеры написан на WINAPi. То есть для того, чтобы управлять камерой, я использую предоставленные мне готовые функции от производителя камеры. А эти функции принимают в качестве аргументов HWND и тд. Вот я и использую WIN API. Про зачтется потом, я охотно верю ;)
А вообще, у меня задача стоит завести эту камеру на Linux. Только как, я пока не знаю. Драйвера только для Винды есть.
EVILEG, благодарю, что все разъяснили. ;)