Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Dim_dimbI4 от Декабрь 28, 2020, 19:39



Название: Привязка контекстного меню к Верхнему элементу 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
в метод показа меню добавить в начало:
Код
C++ (Qt)
if (!ui->listWidget->itemAt(pos))
 return;
в этом случае меню будет показываться только если есть айтем под курсором


Название: Re: Привязка контекстного меню к Верхнему элементу listwidget
Отправлено: Dim_dimbI4 от Декабрь 28, 2020, 20:03
Спасибо огромное!