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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Контекстное меню  (Прочитано 1638 раз)
Alex_C
Гость
« : Июль 06, 2012, 11:43 »

Вопросы по контекстному меню:
1. Вызов меню для QLineEdit - делал так:
Код
C++ (Qt)
   l->setContextMenuPolicy(Qt::CustomContextMenu);
   connect(l, SIGNAL(customContextMenuRequested(const QPoint&)),
       SLOT(slot_contextMenuRequested(const QPoint&)));
 

и далее

Код
C++ (Qt)
void QSOEntryWindow::slot_contextMenuRequested(const QPoint &p)
{
   QLineEdit *l = qobject_cast<QLineEdit *>(sender());
   QMenu *menu = new QMenu(l);
   QAction *a = menu->addAction(tr("Set field for edit"),
                                this, SLOT(slot_setFieldName()));
 
   menu->exec(l->mapToGlobal(p));
   delete menu;
}
 

и т.п - тут все понялно - sender - это QLineEdit.
А вот при вызове slot_setFieldName уже сендером получается QAction.
Вопрос: есть ли способ в slot_setFieldName узнать, какой лайнедит вызвал его?
Пытался так:

Код
C++ (Qt)
void QSOEntryWindow::slot_setFieldName()
{
   QAction *a = qobject_cast<QAction *>(sender());
   QLineEdit *lineEdit = qobject_cast<QLineEdit *>(a->menu()->parent());
 
 

Но a->menu() = 0x0 (qDebug показал).

2. Вызвать контекстное меня для QLabel - как?
Записан
mutineer
Гость
« Ответ #1 : Июль 06, 2012, 11:49 »

попробуй
void QAction::setData ( const QVariant & userData )
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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