Russian Qt Forum
Мая 14, 2025, 01:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: contextMenu для QHeaderView  (Прочитано 6039 раз)
Flakes
Гость
« : Ноября 24, 2008, 01:39 »

Немного не тривиальная проблема. Нужно реализовать контекстное меню на QHeaderView, поэтому вроде нужно переопределять contextMenuEvent. Ну чтож, сделал свой класс, унаследовав от QHeaderView. Пробую живучесть, установил для QTableView свой header, ну и конечно оказалось ему не откуда черпать данные, и заголовок пуст, то есть ваще не отображается.

Покопался, в описалове сказано, что оно делает QAbstractItemModel::headerData() для модели, но как его с моделью законнектить? Ниче типа SetModel() я не нашел.

А может совсем глубоко зарываюсь, и все просто?
Записан
Barmaglodd
Гость
« Ответ #1 : Ноября 24, 2008, 07:57 »

Когда у QTableView делаешь setModel, у QHeaderView вызывается setModel с этой же моделью.
Записан
vvvmag
Гость
« Ответ #2 : Ноября 24, 2008, 09:27 »

можно не переопределять класс QHeaderView. Сделай проще создай слот в котором будет создаваться меню например
Qmenu* mymenu = new QMenu();
mymenu->addAction("myAction");
mymenu->exec();

останется сделать
connect(QHeaderView, SIGNAL(customContextMenuRequest(QPoint)), this, SLOT("имя слота"))

у меня работает
Записан
spirit
Гость
« Ответ #3 : Ноября 24, 2008, 09:35 »

можно не переопределять класс QHeaderView. Сделай проще создай слот в котором будет создаваться меню например
Qmenu* mymenu = new QMenu();
mymenu->addAction("myAction");
mymenu->exec();

останется сделать
connect(QHeaderView, SIGNAL(customContextMenuRequest(QPoint)), this, SLOT("имя слота"))

у меня работает


+ еще надо задать setContextMenuPolicy(Qt::Qt::CustomContextMenu) для виджета у которого будет доступно контекстное меню
и еще сигнал правильно написать: customContextMenuRequest , а customContextMenuRequestedУлыбающийся
Записан
Flakes
Гость
« Ответ #4 : Ноября 30, 2008, 19:57 »

Спасибо, менюшка работает. А как узнать, на каком индексе QHeaderView я вызвал меню, высчитывать по пикселям координаты? А дальше?
Записан
spirit
Гость
« Ответ #5 : Ноября 30, 2008, 20:07 »

Цитировать
int QHeaderView::logicalIndexAt ( const QPoint & pos ) const
This is an overloaded member function, provided for convenience.
Returns the logical index of the section at the position given in pos. If the header is horizontal the x-coordinate will be used to find the logical index; otherwise the y-coordinate will be used.
See also sectionPosition().
Записан
Flakes
Гость
« Ответ #6 : Ноября 30, 2008, 20:54 »

ага, я как раз стал присматриваться к logicalIndexAt. Спасибо еще раз!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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