Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: LinuxFanUNIX в Sep 10, 2009, 00:34



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

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


Титла: Re: Right-Click меню в QListWidget
Публикувано от: dvasilev в Sep 10, 2009, 17:15
@LinuxFanUNIX: Обикновено менютата, които се свързват към отделни компоненти на интерфейса се наричат контекстни, така че google добре те е ориентирал. Има различни възможности за реализация, които би могъл избереш като задаваш contextMenuPolicy. http://doc.trolltech.com/4.5/qwidget.html#contextMenuPolicy-prop ($2)

Една сравнително лесна реализация следва по-долу.
Код
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-та.


Титла: Re: Right-Click меню в QListWidget
Публикувано от: LinuxFanUNIX в Sep 12, 2009, 22:59
Благодаря за отговора, но имам въпрос:
Това което по-горе си написал става но само за целия QListWidget. А на мен ми трябва само за всеки отделен QListWidgetItem, защото опциите които се предлагат от Right Click менюто са различни за всеки QListWidgetItem.  Има ли начин да стане?

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


Титла: Re: Right-Click меню в QListWidget
Публикувано от: dvasilev в Sep 13, 2009, 20:56
@LinuxFanUNIX: Да, има. Дори и при този подход би трябвало да може да стане, ако актуализираш списъка с действие при всяка промяна на текущ QListWidgetItem. Само че от гледна точка на бързодействие не ти го препоръчвам. По-добре е да генерираш менюто при необходимост от показване. Виж този пример ($2) и ако нещо не е ясно защо и как се прави, може да го обсъдим.

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