글
#1 QObject를 상속 받은 tooltip을 처리할 class를 선언한다
at ZenoToolTipHelper.h
class ZenoToolTipHelper : public QObject
{
Q_OBJECT
public:
explicit ZenoToolTipHelper(QObject* parent = NULL)
: QObject(parent)
{
}
protected:
bool eventFilter(QObject* obj, QEvent* event);
};
at ZenoToolTipHelper.cpp
#include <QAbstractItemView>
#include <QToolTip>
#include <QEvent>
#include <QHelpEvent>
bool ZenoToolTipHelper::eventFilter(QObject* obj, QEvent* event)
{
if (event->type() == QEvent::ToolTip)
{
QAbstractItemView* view = qobject_cast<QAbstractItemView*>(obj->parent());
if (view == nullptr)
{
return false;
}
QHelpEvent* helpEvent = static_cast<QHelpEvent*>(event);
QPoint pos = helpEvent->pos();
QModelIndex index = view->indexAt(pos);
if (index.isValid() == false)
return false;
//row , column을 적절하게 판단하여서 tooltip을 보여준다.
QFontMetrics fm(view->font());
QRect rect = view->visualRect(index);
int rectWidth = rect.width();
QToolTip::showText(helpEvent->globalPos(), "tooltip 내용들", view, rect);
return true;
}
return false;
}
#2 #1에서 만들 class를 tableView에 set한다.
tableView->viewport()->installEventFilter(new ZenoToolTipHelper());
RECENT COMMENT