QT4 QMenu菜单 自定义上拉弹出

./cpp

#include "form1.h"
#include "ui_form1.h"

Form1::Form1(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Form1)
{
    ui->setupUi(this);
    first = new QAction(tr("&first"), this);
    second = new QAction(tr("&second"), this);
    //first ->setStatusTip(tr("Show the application's About box"));


    menu=new QMenu(this);
    menu->addAction(first);
    menu->addAction(second);

    connect(first , SIGNAL(triggered()), this, SLOT(f1()));
    connect(second , SIGNAL(triggered()), this, SLOT(s1()));

}

Form1::~Form1()
{
    delete ui;
}

void Form1::on_pushButton_clicked()
{
    QPoint pos;
    pos.setX(0);
    pos.setY(-42);
    menu->exec(ui->pushButton->mapToGlobal(pos));
}
void Form1::f1()
{
  qDebug("fffff");
}
void Form1::s1()
{
  qDebug("ssssss");
}

./.h

#ifndef FORM1_H
#define FORM1_H

#include <QDialog>
#include <QMenu>
#include <QAction>
//class QAction;
//class QMenu;
namespace Ui {
    class Form1;
}

class Form1 : public QDialog
{
    Q_OBJECT

public:
    explicit Form1(QWidget *parent = 0);
    ~Form1();

private:
    Ui::Form1 *ui;
    QMenu *menu;
    QAction *first;
    QAction *second;
private slots:
    void on_pushButton_clicked();
    void f1();
     void s1();

};

#endif // FORM1_H

./main

#include <QtGui/QApplication>
#include "form1.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Form1 w;
    w.show();

    return a.exec();
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt中,我们可以使用QMenu类来创建自定义菜单。QMenu是一个弹菜单,可以包含多个QAction和其他子菜单。 以下是创建自定义菜单的步骤: 1. 创建QMenu对象 ```python menu = QMenu() ``` 2. 创建QAction对象 ```python action1 = QAction("Action 1", self) action2 = QAction("Action 2", self) ``` 3. 将QAction对象添加到QMenu中 ```python menu.addAction(action1) menu.addAction(action2) ``` 4. 显示QMenu对象 ```python menu.exec_(self.mapToGlobal(event.pos())) ``` 其中,event是鼠标右键点击事件,mapToGlobal()函数将当前坐标映射到全局坐标系。 完整代码示例: ```python from PyQt5.QtWidgets import QMainWindow, QMenu, QAction class MainWindow(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setGeometry(100, 100, 300, 200) self.setWindowTitle('Custom Menu') # 创建QMenu对象 menu = QMenu(self) # 创建QAction对象 action1 = QAction("Action 1", self) action2 = QAction("Action 2", self) # 将QAction对象添加到QMenumenu.addAction(action1) menu.addAction(action2) self.setContextMenuPolicy(Qt.CustomContextMenu) self.customContextMenuRequested.connect(lambda event: menu.exec_(self.mapToGlobal(event.pos()))) if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_()) ``` 在上述示例中,我们将自定义菜单关联到了右键点击事件上,并在菜单中添加了两个QAction对象。你可以根据需要添加更多的QAction和子菜单
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值