Установка динамической всплывающей подсказки для элемента QHeaderView

Я хочу иметь динамическую подсказку для одного из моих элементов заголовка 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.

Как правильно достичь этого?

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]