Я хочу иметь динамическую подсказку для одного из моих элементов заголовка QtableView.
Содержание всплывающей подсказки изменяется при нажатии клавиши Alt. Я нашел код, связанный с использованием делегатов на следующем сайте: Всплывающие подсказки для усеченных элементов в QTreeView
В аналогичных строках я попробовал следующий фрагмент кода:
class HeaderToolTipDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
HeaderToolTipDelegate( QObject* inParent );
~HeaderToolTipDelegate();
public slots:
bool helpEvent( QHelpEvent* inEvent, QAbstractItemView* inView, const QStyleOptionViewItem& inOption, const QModelIndex& inIndex );
};
bool HeaderToolTipDelegate::helpEvent
(
QHelpEvent* inEvent,
QAbstractItemView* inView,
const QStyleOptionViewItem& inOption,
const QModelIndex& inIndex
)
{
if( !inEvent || !inView )
return false;
if( inEvent->type() == QEvent::ToolTip )
{
QVariant tooltip = inIndex.data( Qt::DisplayRole );
if( QApplication::keyboardModifiers() == Qt::AltModifier )
{
QToolTip::showText( inEvent->globalPos(), QString( "AltKeyPressed" ), inView );
}
else
{
QToolTip::showText( inEvent->globalPos(), QString( "AltKeyNotPressed" ), inView );
}
if( !QStyledItemDelegate::helpEvent( inEvent, inView, inOption, inIndex ) )
QToolTip::hideText();
return true;
}
return QStyledItemDelegate::helpEvent( inEvent, inView, inOption, inIndex );
}
И тогда я попытался установить делегат для headerView horizontalHeader()->setItemDelegate( new HeaderItemDelegate )
, Но это не сработало.
Кажется, ItemDelgate не работает для headerViews. Я не смог найти ни одного события, связанного с всплывающей подсказкой в QHeaderView.
Как правильно достичь этого?
Задача ещё не решена.