ПУСТО

пятница, 2 октября 2015 г.

Qt - контекстное меню для виджетов

Можно наследовать виджет и переопределить виртуальную функцию


Можно подобно, через QAction

Можно прицепить меню, к уже существующему виджету, не наследуя его

Есть еще вариант того же, но с обработчиком контекстного меню, через сигнал
В приведенном ниже примере, в классе TabWidget (наследнике от QTabWidget) устанавливается контекстное меню на ярлыки вкладок (на элемент QTabBar)

2 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. На эту тему: Как в QTextEdit добавить элемент в контекстное меню?
    1) Наследуя

    void MyTextEdit::contextMenuEvent(QContextMenuEvent *event)
    {
    QMenu *menu = createStandardContextMenu();
    menu->addAction(tr("My Menu Item"));
    //...
    menu->exec(event->globalPos());
    delete menu;
    }

    2) С обработчиком через сигнал

    В конструкторе:
    /-------------------------------------------------------------------
    ui.textEdit_Data->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(ui.textEdit_Data,SIGNAL(customContextMenuRequested(const QPoint &)),this,SLOT(slotShowContextMenu_textEdit_Data(const QPoint &)));

    void MainWindow::slotShowContextMenu_textEdit_Data(const QPoint &p)
    {
    QMenu * menu = ui.textEdit_Data->createStandardContextMenu();
    menu->addSeparator();
    menu->addAction(tr("Загрузить"));
    menu->addAction(tr("Сохранить"));
    menu->exec(ui.textEdit_Data->mapToGlobal(p));
    delete menu;
    }

    ОтветитьУдалить