powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT4] вывод контекстного меню.
5 сообщений из 5, страница 1 из 1
[QT4] вывод контекстного меню.
    #34992822
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
здрасте,
я создаю свое конт-е меню для обьектов типа QComboBox:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
//в конструкторе
  menu=new QMenu(this);
  actNew=new QAction(this);
  actNew->setText(tr("добавить нов."));
  actChange=new QAction(this);  
  actChange->setText(tr("изменить/редактировать"));

  cmbType->setContextMenuPolicy  (Qt::CustomContextMenu);
  connect(cmbType, SIGNAL( customContextMenuRequested(const QPoint &) ),
          this,      SLOT( ContextMenuType(const QPoint &) ) );
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
void frmTest::ContextMenuType(const QPoint &z)
{
  menu->clear();
  disconnect(actNew,  0 ,  0 ,  0 ); 
  disconnect(actChange,  0 ,  0 ,  0 ); 
  menu->addAction(actNew);
  menu->addAction(actChange);
  connect(actNew,   SIGNAL( triggered() ),
          this,       SLOT( TypeNew() ) );  
  connect(actChange,SIGNAL( triggered() ),
          this,       SLOT( TypeChange() ) );            
  menu->popup( z                          //текущая позиция курсра над обьектом
              +this->pos()                //текущая позиция окна
              +cmbType->pos()             //текущая позиция нужного обьекта
              +QPoint(  0 , menu->height() )//высота самого меню 
              +QPoint( 6 ,- 5 )               //чтоб меню было ПОД курсором
              );
}
то что происходит между "menu->popup(" и ");" совсем не идеальный код,
но работает(меню появляется под курсором), и только первый раз при вызове контекстного меню для одного обьекта, потом меню появляется смещенным вниз на 15-20 пикселей, незнаю почему.
вопрос почему?
есть способ по проще написать это?
...
Рейтинг: 0 / 0
[QT4] вывод контекстного меню.
    #34993474
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вычислить параметры до вызова функции запрещает какая-то религия?
...
Рейтинг: 0 / 0
[QT4] вывод контекстного меню.
    #34993605
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
меню одно но вызывается для разных обьектов с разным количеством возм-х действий
и хранить для каждого обьекта параметры - немного накладно и menu->height() - возможно будет меняться.
...
Рейтинг: 0 / 0
[QT4] вывод контекстного меню.
    #34994013
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я говорил о вычислении, а не о хранении, типа так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
...
QPoint menuposition = z                          //текущая позиция курсра над обьектом
              +this->pos()                //текущая позиция окна
              +cmbType->pos()             //текущая позиция нужного обьекта
              +QPoint(  0 , menu->height() )//высота самого меню 
              +QPoint( 6 ,- 5 );//чтоб меню было ПОД курсором
menu->popup(menuposition);
...
// даже сделай лучше так:
...
QPoint menuposition = z;                         //текущая позиция курсра над обьектом
menuposition += this->pos();                //текущая позиция окна
menuposition += cmbType->pos();             //текущая позиция нужного обьекта
menuposition += QPoint(  0 , menu->height() );//высота самого меню 
menuposition += QPoint( 6 ,- 5 );//чтоб меню было ПОД курсором
...
и смотри, изучай где косячит; от магических цифр тоже неплохо-бы избавиться...
...
Рейтинг: 0 / 0
[QT4] вывод контекстного меню.
    #34994302
Programister0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо нашел ошибку, menu->height() и menu->width() - незнаю почему но первый раз вычисляется неверно!

и вычислить тек-ю поз-ю курсора можно пол-ть с помощью mapToGlobal(z);
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / [QT4] вывод контекстного меню.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]