Russian Qt Forum
Ноябрь 22, 2024, 19:16
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
Привязка контекстного меню к Верхнему элементу listwidget
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Привязка контекстного меню к Верхнему элементу listwidget (Прочитано 1558 раз)
Dim_dimbI4
Новичок
Offline
Сообщений: 3
Привязка контекстного меню к Верхнему элементу listwidget
«
:
Декабрь 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));
}
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Привязка контекстного меню к Верхнему элементу listwidget
«
Ответ #1 :
Декабрь 28, 2020, 19:56 »
в метод показа меню добавить в начало:
Код
C++ (Qt)
if
(
!
ui
->
listWidget
->
itemAt
(
pos
)
)
return
;
в этом случае меню будет показываться только если есть айтем под курсором
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Dim_dimbI4
Новичок
Offline
Сообщений: 3
Re: Привязка контекстного меню к Верхнему элементу listwidget
«
Ответ #2 :
Декабрь 28, 2020, 20:03 »
Спасибо огромное!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...