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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: contextMenu для QHeaderView  (Прочитано 5842 раз)
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.042 секунд. Запросов: 21.