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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кнопка с меню в QItemDelegate  (Прочитано 4026 раз)
qtист
Гость
« : Ноябрь 26, 2013, 09:23 »

Создаю в QTreeWidget делегаты c кнопкой:

Код
C++ (Qt)
QWidget *ButtonDelegate::createEditor(QWidget *parent,
   const QStyleOptionViewItem &/* option */,
   const QModelIndex &  index ) const
{
QToolButton  *editor = new  QToolButton (parent);
editor->setPopupMode(QToolButton::MenuButtonPopup);
 
QMenu *menu=new QMenu;
QAction * Act = new QAction(tr("Сформированные фразы"),parent);
menu->addAction(Act);
editor->setMenu(menu);
connect(Act, SIGNAL(triggered()), this, SLOT(emitCommitDataP()));
 
connect(editor, SIGNAL(clicked()), this, SLOT(emitCommitData()));
 
return editor;
..........
}
 
void ButtonDelegate::emitCommitData()
{
 QWidget  *Box = qobject_cast<QWidget *>(sender());
}
 
void ButtonDelegate::emitCommitDataP()
{
 QWidget  *Box = qobject_cast<QWidget *>(sender());
}

Кликаю на кнопку,в слоте emitCommitData Box лпределяется,всё защибись Смеющийся
Если на этой же кнопке вызвать пункт из выпадающего меню,в слоте emitCommitDataP
Box равен 0.
Тут надо как-то хитро определять из какой кнопки было выбрано меню? Непонимающий
Записан
mutineer
Гость
« Ответ #1 : Ноябрь 26, 2013, 09:55 »

QToolButton является наследником QWidget, поэтому нормально кастуется, а вот QAction не является, поэтому каст его к виджету дает 0
Записан
qtист
Гость
« Ответ #2 : Ноябрь 26, 2013, 10:27 »

так делать то что?
Записан
mutineer
Гость
« Ответ #3 : Ноябрь 26, 2013, 11:15 »

Не кастить QAction к QWidget, очевидно же
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #4 : Ноябрь 26, 2013, 11:37 »

Воспользоваться методом setData для QAction.
Записан
Hellraiser
Бывалый
*****
Offline Offline

Сообщений: 451


Просмотр профиля
« Ответ #5 : Ноябрь 26, 2013, 11:40 »

Ну и, конечно, кастить сендера к QAction.
Записан
qtист
Гость
« Ответ #6 : Ноябрь 26, 2013, 12:00 »

Ну и, конечно, кастить сендера к QAction.

премного благодарен  Строит глазки
не допёр сразу Плачущий Плачущий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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