Qt过滤事件
.h
bool eventFilter(QObject *obj, QEvent *eve);
.cpp
m_TableWidget->viewport()->installEventFilter(this);
bool RouterPlan::eventFilter(QObject *obj, QEvent *eve)
{
if (obj == m_TableWidget->viewport())
{
if (eve->type() == QEvent::Drop)
{
const QMimeData *mime = ((QDropEvent*)eve)->mimeData();
QByteArray encodedata = mime->data("application/x-qabstractitemmodeldatalist");
if (encodedata.isEmpty())
{
return false;
}
QDataStream stream(&encodedata, QIODevice::ReadOnly);
...
}
else
{
return QWidget::eventFilter(obj, eve);
}
}
else
{
return QWidget::eventFilter(obj, eve);
}
}
Qt接受消息
.h
virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result);
.cpp
// ::SendMessage((HWND)parent->winId(), WM_USER + 100, (WPARAM)&type, NULL);
bool RouterPlan::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
Q_UNUSED(eventType);
MSG* msg = reinterpret_cast<MSG*>(message);
if (msg->message == WM_USER + 100)
{
...
}
return QWidget::nativeEvent(eventType, msg, result);
}