zoukankan      html  css  js  c++  java
  • 【Qt开发】菜单栏,工具栏和状态栏

     概述

    菜单栏,工具栏,状态栏应用中经常见到,下图解释一目了然,实际开发中 两种方式来实现,一种是使用纯代码QMenuBar,QToolBar,QStatusBar来设计开发,另一种使用Qt Designer通过拖拽的形式来实现,减少了大量的代码,使用简单。

    菜单栏

    1.新建项目UI基类选择QMainWindow。

    2.双击在这里输入,可修改一级菜单的名称。

    3.动作编辑器里添加actionOpen,actionSave两个动作

    4.鼠标左键拖拽action到文件下的二级菜单即可,同时打开和保存之间可以添加分隔符

    5.头文件中添加槽

    private slots:
        void OnOpenFile();
        void OnSaveFile();

    6.源文件实现槽函数

    /************************************
    @ Brief:        打开文件
    @ Author:        红烧肉 
    @ Created:        2019/04/22
    @ Return:            
    ************************************/
    void MenuDialog::OnOpenFile()
    {
        QMessageBox::information(this, "提示", "点击了打开Action", QMessageBox::Yes);
    }
    
    /************************************
    @ Brief:        保存文件
    @ Author:        红烧肉
    @ Created:        2019/04/22
    @ Return:
    ************************************/
    void MenuDialog::OnSaveFile()
    {
        QMessageBox::information(this, "提示", "点击保存Action!", QMessageBox::Yes)
    }

    7.构造函数里连接信号与槽

        connect(ui.actionOpen, &QAction::triggered, this, &MenuDialog::OnOpenFile);
        connect(ui.actionSave, &QAction::triggered, this, &MenuDialog::OnSaveFile);

    工具栏

    菜单下方的区域就是用来存放工具栏。

    添加工具栏更简单,直接拖拽acitonOpen,actionSave到该区域即可

    常用方法:

    void setMovable(bool movable):设置工具栏区域是否可移动

    void setAllowedAreas(Qt::ToolBarAreas areas):设置工具栏可移动的范围

    void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle):设置工具栏按钮的风格,如纯图标,文字,文字图标都有等

    状态栏  

     常用方法

    void addWidget(QWidget *widget, int stretch = 0):状态栏左侧添加一个widget。对widget的拉伸系数为0。

    void addPermanentWidget(QWidget *widget, int stretch = 0):状态栏右侧添加一个widget。

    void setSizeGripEnabled(bool):设置右下角拖动缩放的控制点。

    void showMessage(const QString &message, int timeout = 0):留言显示,过期时间为 timeout。

     示例代码:

        statusBar()->addWidget(new QLabel("label1"));
        statusBar()->addWidget(new QLabel("label2"));
        statusBar()->addPermanentWidget(new QLabel("label3"));
        statusBar()->addPermanentWidget(new QLabel("label4"));
        statusBar()->showMessage("留言", 5000);
        statusBar()->setSizeGripEnabled(false); //不显示右下角拖放控制点
        statusBar()->setStyleSheet(QString("QStatusBar::item{border: 0px}")); // QSS不显示label的边框

     

  • 相关阅读:
    使用bootstrap中的toolTip插件时 最上方提示会被遮挡问题
    Vue中splice的使用
    由于eslint语法检查工具限制很严格,导致启动项目是报错的解决办吧(使用cmder工具时发生的错误)
    windows命令行工具—Cmder配置
    mui触发自定义事件(子页面返回传递给父级页面值)
    计算最长英语单词链
    周总结14
    找水王
    用户体验评价
    周总结13
  • 原文地址:https://www.cnblogs.com/woniu201/p/10769900.html
Copyright © 2011-2022 走看看