Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: INZER от Сентябрь 05, 2017, 15:26



Название: Как сдвинуть контекстное меню
Отправлено: INZER от Сентябрь 05, 2017, 15:26
Создаю кастомное контекстное меню для таблицы

Код:
    ui->tableDevices->addAction(acRepairState);
    ui->tableDevices->addAction(acSwitchReserve);
    ui->tableDevices->addAction(acSwitchToStandby);
    ui->tableDevices->setContextMenuPolicy(Qt::ActionsContextMenu);

Как сдвинуть его на 10 пикселей вправо и на 10 вниз относительно стандартного местоположения под курсором?

Заранее спасибо


Название: Re: Как сдвинуть контекстное меню
Отправлено: MrDron от Сентябрь 05, 2017, 15:45
Напрашивается что-то типа:
Код
C++ (Qt)
ui->tableDevices->installEventFilter(this);
 
bool Widget::eventFilter(QObject *watched, QEvent *event)
{
   if (watched == ui->tableDevices && event->type == QEvent::ContextMenu)
   {
       QMenu.popup(QCursor::pos() + QPoint(10, 10));
   }
   return QWidget::eventFilter(watched, event);
}
 


Название: Re: Как сдвинуть контекстное меню
Отправлено: INZER от Сентябрь 05, 2017, 16:03
Цитировать

QMenu.popup(QCursor::pos() + QPoint(10, 10));

Немножко не понял как обратиться к QMenu созданного для tableDevices


Название: Re: Как сдвинуть контекстное меню
Отправлено: MrDron от Сентябрь 05, 2017, 16:06
Цитировать

QMenu.popup(QCursor::pos() + QPoint(10, 10));

Немножко не понял как обратиться к QMenu созданного для tableDevices

Нужно его создать, это вместо твоего кода:
Код
C++ (Qt)
QMenu *menu = new QMenu();
menu->addActions(QList<QAction*>() << acRepairState << acSwitchReserve << acSwitchToStandby);
 


Название: Re: Как сдвинуть контекстное меню
Отправлено: INZER от Сентябрь 05, 2017, 16:30
Тупанул, спасибо, все ok