【Qt开发】菜单栏,工具栏和状态栏

 概述

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

【Qt开发】菜单栏,工具栏和状态栏

菜单栏

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

【Qt开发】菜单栏,工具栏和状态栏

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

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

【Qt开发】菜单栏,工具栏和状态栏

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

【Qt开发】菜单栏,工具栏和状态栏

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);

工具栏

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

【Qt开发】菜单栏,工具栏和状态栏

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

【Qt开发】菜单栏,工具栏和状态栏

常用方法:

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的边框

 

【Qt开发】菜单栏,工具栏和状态栏

 【Qt开发】菜单栏,工具栏和状态栏

 

上一篇:android – React Native中的StatusBar颜色


下一篇:[转]Qt状态栏(statusbar)的使用