Russian Qt Forum
Ноябрь 25, 2024, 22:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать ContextMenu на HorizontalHeaderItem таблицы(4.2)  (Прочитано 4649 раз)
druxa@mail.com
Гость
« : Ноябрь 14, 2006, 01:07 »

При правом щелчке мыши на header-е QTableWidget-а как вывести context Menu?
Записан
Dendy
Гость
« Ответ #1 : Ноябрь 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;
}
Записан
bigirbis
Гость
« Ответ #2 : Ноябрь 14, 2006, 19:15 »

Дык у него
setContextMenuPolicy ( Qt::ContextMenuPolicy )
в пабликах...
Записан
druxa@mail.com
Гость
« Ответ #3 : Ноябрь 15, 2006, 01:24 »

А как сделать, что бы контекстное меню всплывало при наведении на конкретный header Item, например: horizontalHeaderItem(1).
Код:
TMTable->horizontalHeaderItem(1)->installEventFilter(this);
error: 'class QTableWidgetItem' has no member named 'installEventFilter'

не работает.
Вообще нужно, что бы при нажатии правой кнопки мыши над horizontalHeaderItem всплывало для каждой колонки Header-ов своё меню.
Записан
Dendy
Гость
« Ответ #4 : Ноябрь 15, 2006, 15:20 »

Устанавливаешь фильтр на QHeaderView. Когда срабатьІвает - смотришь на каком Item'е клацнули:

Код:
int column = header_view->logicalIndexAt( static_cast<QMouseEvent*>( e )->pos() );
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.187 секунд. Запросов: 21.