qt 创建一个右键点击后出现的菜单

1.概要

qt 创建一个右键点击后出现的菜单

2.代码

2.1 类 MyWidget

2.1.1 头文件

#ifndef MYWIDGET_H
#define MYWIDGET_H

#include <QWidget>
#include <QMenu>
#include <QContextMenuEvent>

class MyWidget : public QWidget {
    Q_OBJECT

public:
    explicit MyWidget(QWidget *parent = nullptr);
    ~MyWidget();

protected:
    void contextMenuEvent(QContextMenuEvent *event) override;

private slots:
    void onActionNewTriggered();
    void onActionOpenTriggered();

private:
    QMenu *contextMenu;
    QAction *actionNew;
    QAction *actionOpen;
};

#endif // MYWIDGET_H

2.1.2 源文件

#include "mywidget.h"
#include <QAction>
#include <QDebug>

MyWidget::MyWidget(QWidget *parent) : QWidget(parent) {
    // 创建动作
    actionNew = new QAction(tr("&New"), this);
    actionOpen = new QAction(tr("&Open..."), this);

    // 创建上下文菜单
    contextMenu = new QMenu(this);
    contextMenu->addAction(actionNew);
    contextMenu->addAction(actionOpen);

    // 连接信号和槽
    connect(actionNew, &QAction::triggered, this, &MyWidget::onActionNewTriggered);
    connect(actionOpen, &QAction::triggered, this, &MyWidget::onActionOpenTriggered);
}

MyWidget::~MyWidget() {
    // 清理资源,如果需要的话(在这个例子中,Qt会自动处理QAction和QMenu的内存管理)
}

void MyWidget::contextMenuEvent(QContextMenuEvent *event) {
    contextMenu->exec(event->globalPos());
}

void MyWidget::onActionNewTriggered() {
    qDebug() << "New file action triggered";
    // 在这里实现“新建”功能的代码
}

void MyWidget::onActionOpenTriggered() {
    qDebug() << "Open file action triggered";
    // 在这里实现“打开”功能的代码
}

2.2 程序入口

#include <QApplication>
#include "mywidget.h"
//qt 创建一个右键点击后出现的菜单;将用到Q_OBJECT的类的头文件和源文件分开
int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    MyWidget widget;
    widget.show();
    return app.exec();
}

3.运行结果

QT右键菜单实验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值