Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: druxa@mail.com от Ноябрь 14, 2006, 01:07



Название: Как сделать ContextMenu на HorizontalHeaderItem таблицы(4.2)
Отправлено: druxa@mail.com от Ноябрь 14, 2006, 01:07
При правом щелчке мыши на header-е QTableWidget-а как вывести context Menu?


Название: Как сделать ContextMenu на HorizontalHeaderItem таблицы(4.2)
Отправлено: Dendy от Ноябрь 14, 2006, 05:21
Перехватить собьІтиё:

Код:
void MyWidget::some_method()
{
  ...
  table_widget_->horizintalHeader()->installEventFilter( this );
  ...
}

bool MyWidget::eventFilter( QObject * o, QEvent * e )
{
  if ( o == table_widget_->horizontalHeader() && e->type() == QEvent::ContextMenu )
  {
    // трам парарам
    return true;
  }
  return false;
}


Название: Как сделать ContextMenu на HorizontalHeaderItem таблицы(4.2)
Отправлено: bigirbis от Ноябрь 14, 2006, 19:15
Дык у него
setContextMenuPolicy ( Qt::ContextMenuPolicy )
в пабликах...


Название: Как сделать ContextMenu на HorizontalHeaderItem таблицы(4.2)
Отправлено: druxa@mail.com от Ноябрь 15, 2006, 01:24
А как сделать, что бы контекстное меню всплывало при наведении на конкретный header Item, например: horizontalHeaderItem(1).
Код:
TMTable->horizontalHeaderItem(1)->installEventFilter(this);
error: 'class QTableWidgetItem' has no member named 'installEventFilter'

не работает.
Вообще нужно, что бы при нажатии правой кнопки мыши над horizontalHeaderItem всплывало для каждой колонки Header-ов своё меню.


Название: Как сделать ContextMenu на HorizontalHeaderItem таблицы(4.2)
Отправлено: Dendy от Ноябрь 15, 2006, 15:20
Устанавливаешь фильтр на QHeaderView. Когда срабатьІвает - смотришь на каком Item'е клацнули:

Код:
int column = header_view->logicalIndexAt( static_cast<QMouseEvent*>( e )->pos() );