@J-Hilk said in focus tracking:
https://doc.qt.io/qt-6/qfocusevent.html
Thank you, I have:
bool clsXMLnode::eventFilter(QObject* pobjObject, QEvent* pobjEvent) {
Q_ASSERT_X(pobjEvent!=nullptr, "clsXMLnode::eventFilter", "pobjEvent is null!");
QWidget* pobjWidget(qobject_cast<QWidget*>(pobjObject));
clsXMLnode* pobjWindow(pobjGetWindow());
clsXMLinterface* pobjXMLIF(nullptr);
if ( pobjWindow != nullptr ) {
pobjXMLIF = pobjWindow->pobjGetXMLIF();
}
QEvent::Type evtType(pobjEvent->type());
QString strID;
if ( pobjWidget != nullptr ) {
strID = pobjWidget->accessibleName();
}
if ( evtType == QEvent::FocusIn ) {
if ( pobjXMLIF != nullptr ) {
clsXMLnode* pobjNode(pobjXMLIF->pobjGetNode());
emit pobjNode->setWidgetInFocus(pobjWidget);
}
} else if ( evtType == QEvent::FocusOut ) {
} else if ( evtType == QEvent::MouseMove ) {
//HACK QMouseEvent* pobjMouse = qobject_cast<QMouseEvent*>(pobjEvent);
//HACK QPoint ptPos = pobjMouse->pos();
//HACK qdbg() << "9" << clsDebugService::msccDebugLevelDelimiter << "" << "eventFilter(MouseMove):" << strGetAttribute(clsXMLnode::mscszAttrID) << ptPos.x() << ptPos.y() << "HACK!";
} else if ( evtType == QEvent::Move ) {
QMoveEvent* pobjMove(reinterpret_cast<QMoveEvent*>(pobjEvent));
QPoint ptNew(pobjMove->pos());
if ( ptNew.x() >= 0 && ptNew.y() >= 0 && ptNew != mptLastMouse ) {
mptLastMouse = ptNew;
setAttribute(clsXMLnode::mscszAttrPoint
,QString::number(mptLastMouse.x())
+ clsXMLnode::msccParamDelimiter
+ QString::number(mptLastMouse.y()));
return false;
}
} else if ( evtType == QEvent::Resize ) {
QResizeEvent* pobjResize(reinterpret_cast<QResizeEvent*>(pobjEvent));
QSize szNew(pobjResize->size());
if ( szNew.isValid() == true ) {
setAttribute(clsXMLnode::mscszAttrResize, QString::number(szNew.width())
+ clsXMLnode::msccParamDelimiter
+ QString::number(szNew.height()));
return false;
}
}
return QObject::eventFilter(pobjObject, pobjEvent);
}
Which I wrote a long time ago, will revisit and adapt.
I must be getting old, because I've already done this:
QObject::connect(this, &clsXMLnode::setWidgetInFocus
,this, &clsXMLnode::onSetWidgetInFocus);