Название: Привязка контекстного меню к Верхнему элементу listwidget Отправлено: Dim_dimbI4 от Декабрь 28, 2020, 19:39 Есть Listwidget в который добавлен один элемент MAIN, по нажатию на который нужно вызывать контекстное меню, на данный момент оно вызывается на всей области listwidget как исправить чтобы вызывалось только на элементе MAIN. Вот мой исходный код, подскажите что куда дописать чтобы заработало как мне нужно
mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void showContextMenu(QPoint pos); private: Ui::MainWindow *ui; QMenu* menu; }; #endif // MAINWINDOW_H mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QMenu> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); ui->listWidget->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->listWidget, SIGNAL(customContextMenuRequested(QPoint)), SLOT(showContextMenu(QPoint))); } MainWindow::~MainWindow() { delete ui; } void MainWindow::showContextMenu(QPoint pos) { QMenu* menu = new QMenu(this); QAction* editDevice = new QAction(tr("Редактировать"), this); QAction* deleteDevice = new QAction(tr("Удалить"), this); menu->addAction(editDevice); menu->addAction(deleteDevice); menu->popup(ui->listWidget->viewport()->mapToGlobal(pos)); } Название: Re: Привязка контекстного меню к Верхнему элементу listwidget Отправлено: kambala от Декабрь 28, 2020, 19:56 в метод показа меню добавить в начало:
Код в этом случае меню будет показываться только если есть айтем под курсором Название: Re: Привязка контекстного меню к Верхнему элементу listwidget Отправлено: Dim_dimbI4 от Декабрь 28, 2020, 20:03 Спасибо огромное!
|