Автор Тема: Right-Click меню в QListWidget  (Прочетена 2700 пъти)

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Right-Click меню в QListWidget
« -: Sep 10, 2009, 00:34 »
Добър вечер. Имам следният проблем, чието разрешение не мога да намеря близо седмица. Та проблемът ми е следният:
Имам един QListWidget. Та въпросът ми е как мога към него да задам меню чийто опции се свързват към функции от рода на
Код
GeSHi (C++):
  1. void MainWindow::removeItem()
Търсих и в Google и навсякъде откривам някакво си решение с contextMenu(QPoint), но така и като го свържа никой не е описал как точно да го свържа към моето меню. Иначе самото меню е създадето (използвал съм QMenu за целта), но ако трябва по друг начин да се направи по-друг начин - само споделете как да стане.

Благодаря предварително!
Активен

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
Re: Right-Click меню в QListWidget
« Отговор #1 -: Sep 10, 2009, 17:15 »
@LinuxFanUNIX: Обикновено менютата, които се свързват към отделни компоненти на интерфейса се наричат контекстни, така че google добре те е ориентирал. Има различни възможности за реализация, които би могъл избереш като задаваш contextMenuPolicy. http://doc.trolltech.com/4.5/qwidget.html#contextMenuPolicy-prop

Една сравнително лесна реализация следва по-долу.
Код
GeSHi (C++):
  1. QAction* act1 = new QAction(tr("aaa"), this);
  2. connect(act1, SIGNAL(triggered()), SLOT(aaaTriggered()));
  3.  
  4. QAction* act2 = new QAction(tr("bbb"), this);
  5. connect(act1, SIGNAL(triggered()), SLOT(bbbTriggered()));
  6.  
  7. widget->addAction(act1);
  8. widget->addAction(act2);
  9. widget->setContextMenuPolicy(Qt::ActionsContextMenu);
  10.  
Разбира се, при някои по-завързани ситуации, това едва ли ще ти е полезно и ще се наложи да изплозваш някоя от другите context menu policy-та.
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Re: Right-Click меню в QListWidget
« Отговор #2 -: Sep 12, 2009, 22:59 »
Благодаря за отговора, но имам въпрос:
Това което по-горе си написал става но само за целия QListWidget. А на мен ми трябва само за всеки отделен QListWidgetItem, защото опциите които се предлагат от Right Click менюто са различни за всеки QListWidgetItem.  Има ли начин да стане?

Благодаря ти отново!
Активен

dvasilev

  • Напреднали
  • *****
  • Публикации: 200
  • Distribution: Kubuntu, Debian
  • Window Manager: KDE
    • Профил
    • WWW
Re: Right-Click меню в QListWidget
« Отговор #3 -: Sep 13, 2009, 20:56 »
@LinuxFanUNIX: Да, има. Дори и при този подход би трябвало да може да стане, ако актуализираш списъка с действие при всяка промяна на текущ QListWidgetItem. Само че от гледна точка на бързодействие не ти го препоръчвам. По-добре е да генерираш менюто при необходимост от показване. Виж този пример и ако нещо не е ясно защо и как се прави, може да го обсъдим.

п.с. Ти си писал, че си гледал някакъв пример, но не ми е ясно дали става въпрос за същия.
Активен