crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как отобразить меню при правом нажатии мыши над QTreeWidget?
Rocky
  опции профиля:
сообщение 12.2.2009, 23:49
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Всем привет!

У меня есть QTreeWidget, заполненный некоторыми элементами. Как обработать правый щелчек мыши над элементом? И как при этом узнать сам айтем, над которым произошло нажатие? Я так понимаю здесь нужно использовать QMouseEvent... Но как с ним работать не совсем понятно. В примерах нету ничего подобного... Подскажите плиз, кто знает. Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.2.2009, 0:07
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Rocky @ 13.2.2009, 2:49) *
Как обработать правый щелчек мыши над элементом?
если тебе всетаки не просто щелчек нужен, а именно меню, то смотри в сторону:
QWidget::addAction();
QWidget::setContextMenuPolicy();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 13.2.2009, 0:09
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


setContextMenuPolicy(Qt::CustomContextMenu);
menu = new QMenu(treeWidget);
...//заполнение меню
...
void MyWindow::on_treeWidget_customContextMenuRequested(const QPoint& pos)
{
    QTreeWidgetItem item= treeWidget->itemAt(pos);
    QPoint gPos = treeWidget->mapToGlobal(pos);
    if (item)
    {
            menu->exec(gPos);
    }
}


Возможно где-то что-то еще подпилить придется, взял из своего старого кода.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 13.2.2009, 0:17
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Litkevich Yuriy, спасибо, утром попробую.

SABROG, а on_treeWidget_customContextMenuRequested - это слот? А с чем его соединять?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 13.2.2009, 0:23
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Если treeWidget создается через .ui файл вместе с главной формой, то ни с чем соединять не нужно, он автоматически это сделает. Если treeWidget создается вручную в исходниках, тогда коннектишь его к сигналу
void QWidget::customContextMenuRequested (const QPoint &pos), где в роли QWidget выступает treeWidget.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 13.2.2009, 0:30
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Понял, всем спасибо )) Теперь хоть понятно что к чему, а то я уже в дебри полез какие-то :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 2.12.2024, 10:06