Qt学习笔记(三)菜单、工具、状态栏,对话框

1. 菜单栏

#include<QMenuBar>

QMenuBar *mbar=menubar();

 

#include<QMenu>

QMenu *pFile=mbar->addMenu("...");

 

#include<QAction>

QAction *pNew=pFile->addAction("...");

connect(pNew,&QAction::triggered,[=](){...});

pFile->addSeparator();

//总的来说就是创建菜单栏->添加菜单->给菜单添加动作(类似按钮)

2. 工具栏

#include<QToolBar>

QToolBar *tollBar=addToolBar("...")

toolBar->addAction(pNew);

 

QPushButton *b=new QPushButton(this);

toolBar->addWidget(b);

3. 状态栏

#include<QStatusBar>

QStatusBar *sBar=statusBar();

 

#include<QLabel>

QLabel *label=new QLabel(this);

label->setText("...");

4. 模态/非模态对话框

出现模态对话框时不能操作其他窗口,非模态对话框反之

#include<QDialog>

QDialog dlg;

dlg.exec();/dlg.show();

     模态      /   非模态

 

QDialog *p=new QDialog;

p->setAttribute(Qt::WA_DeletOnClose);//(非模态,一般不指定父对象)防止内存泄漏


5. 标准对话框

#include<QMessageBox>

QMessageBox::about(this,"title","text");//简单的对话框,只有一个按钮“ok”

 

int ret1=QMessageBox::question(this,"title","text");//问题对话框,默认两个按钮“Yes”,“No”

//返回值为枚举型,如QMessageBox::Yes、QMessageBox::No

 

int ret2=QMessageBox::question(this,"title","text",QMessageBox::Ok|QMessageBox::Cancel);

//指定对话框中的按钮

6. 文件对话框

#include<QFileDialog>

Qstring path=QFileDialog::getOpenFileName(this,"open","../");//储存被打开文件的路径

7.示例程序(mainwindow.cpp)

#include "mainwindow.h"
#include <QString>
#include <QMenuBar>
#include <QMenu>
#include <QToolBar>
#include <QAction>
#include <QDebug>
#include <QStatusBar>
#include <QLabel>
#include <QMessageBox>
#include <QFileDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenuBar *menu=menuBar();

    QMenu *file=menu->addMenu("文件");
    QMenu *alter=menu->addMenu("编辑");
    QMenu *setting=menu->addMenu("设置");

    QAction *open=file->addAction("打开");
    QAction *save=file->addAction("保存");
    QAction *undo=alter->addAction("撤销");
    QAction *close=setting->addAction("关闭程序");

    QToolBar *tb1=addToolBar("打开");
    tb1->addAction(open);
    QToolBar *tb2=addToolBar("关闭程序");
    tb2->addAction(close);

    QStatusBar *status=statusBar();

    QLabel *label=new QLabel(this);
    label->setText("程序运行中");
    status->addWidget(label);

    b1.setParent(this);
    b1.setText("模态对话框");
    b1.resize(100,50);
    b1.move(0,50);
    b2.setParent(this);
    b2.setText("非模态对话框");
    b2.resize(100,50);
    b2.move(0,100);

    dlg1.setWindowTitle("这是一个模态对话框");

    connect(open,&QAction::triggered,
            [=]()
    {
        qDebug()<<"打开被按下";
        QString path=QFileDialog::getOpenFileName(this,"open","../");
        qDebug()<<path;
        label->setText("打开文件成功");
    });
    connect(save,&QAction::triggered,
            [=]()
    {
        qDebug()<<"保存被按下";
        label->setText("文件已保存");
    });
    connect(undo,&QAction::triggered,
            [=]()
    {
        qDebug()<<"撤销被按下";
        label->setText("已撤销");
    });
    connect(close,&QAction::triggered,this,
            [=]()
    {
        QMessageBox::about(this,"关闭","准备关闭程序");
        int ret=QMessageBox::question(this,"关闭","是否要关闭程序?");
        if(ret==QMessageBox::Yes)
            this->close();
    });
    connect(&b1,&QPushButton::clicked,
            [=]()
    {
        dlg1.exec();
    });
    connect(&b2,&QPushButton::clicked,
            [=]()
    {
        dlg2=new QDialog;
        dlg2->setWindowTitle("这是一个非模态对话框");
        dlg2->setAttribute(Qt::WA_DeleteOnClose);
        dlg2->show();
    });

    resize(500,500);
}

MainWindow::~MainWindow()
{

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值