• qt中的菜单QMenu QAction


    Qt中要建立菜单,有三个类很重要:

    QMenuBar(QWidget * parent = 0)
    QMenu(QWidget * parent = 0) 
    QMenu(const QString & title, QWidget * parent = 0)
    QAction(QObject * parent) 
    QAction(const QString & text, QObject * parent) 
    QAction(const QIcon & icon, const QString & text, QObject * parent)
    

    QMenuBar:就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QAction

    QMenu:菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用

    QAction: Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction才是真正负责执行操作的部件。

    建立一个菜单栏,基本上要三步:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QMenu>
    #include <QMenuBar>
    #include <QStatusBar>
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
        QMenu* menu[10];
        QAction* act[10];
        QMenuBar* menuBar ;
        QStatusBar* status ;
    public slots:
        void trigerMenu(QAction* act);
    };
    
    #endif // MAINWINDOW_H
    
    #include "mainwindow.h"
    #include <Qt>
    #include <QtDebug>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
    {
        this->resize(400,300);
        this->centralWidget();
    
        status = new QStatusBar(this);
    
        menu[0] = new QMenu("文件");
        menu[0]->addAction("编辑");
        menu[0]->addAction("查看");
        menu[0]->addAction("工具");
    
        act[0] = new QAction("新建",this);
        act[0]->setShortcut(Qt::CTRL | Qt::Key_A );
        act[0]->setStatusTip("这是一个新建菜单");
    
        act[1] = new QAction("打开",this);
        act[1]->setCheckable(true);
    
        menu[1] = new QMenu("保存");
        menu[1]->addAction(act[0]);
        menu[1]->addAction(act[1]);
    
        menu[2] = new QMenu("打印");
        menu[2]->addAction("打印设置");
        menu[2]->addMenu(menu[1]);
    
        menuBar = new QMenuBar(this);
        menuBar->addMenu(menu[0]);
        menuBar->addMenu(menu[2]);
        menuBar->setGeometry(0,0,this->width(),30);
    
        connect(menuBar,SIGNAL(triggered(QAction*)),this,SLOT(trigerMenu(QAction*)));
    }
    
    MainWindow::~MainWindow()
    {
    
    }
    
    void MainWindow::trigerMenu(QAction* act)
    {
        if(act->text() == "新建")
        {
            qDebug()<<"新建菜单被按下";
        }
    }
    
    #include "mainwindow.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        MainWindow w;
        w.show();
    
        return a.exec();
    }
    

      

      

  • 相关阅读:
    电商拼团系统开发思路和拼团系统开发产品设计思路
    唐古拉优选拼团系统设计模式和唐古拉优选拼团系统核心代码介绍
    计算机体系结构之三--函数的调用和返回【译】
    cxv文件合并
    ubuntu18.04安装Mono及MonoDevelop,用c#开发winform
    repo怎么都下不完,原因
    repo下载安卓源码经常掉线,解决方法
    编译ad10
    ub18.04 root账户
    安卓源码导入android studio
  • 原文地址:https://www.cnblogs.com/leijiangtao/p/4175117.html
Copyright © 2020-2023  润新知