Qt:菜单栏、工具栏、状态栏、核心控件、浮动窗口、模态对话框、非模态对话框、标准对话框、文件对话框

一.菜单栏、工具栏、状态栏、核心控件、浮动窗口

#include "mainwindow.h"
#include <QMenuBar>//菜单栏
#include <QMenu>//菜单
#include <QAction>
#include <QDebug>
#include <QToolBar>//工具栏
#include <QPushButton>//按钮
#include <QStatusBar>//状态栏
#include <QLabel>//标签
#include <QTextEdit>//文本框
#include <QDockWidget>//浮动窗口
MainWindow::MainWindow(QWidget *parent)//继承QMainWindow的MainWindow类的构造函数
    : QMainWindow(parent)
{
    this->setWindowTitle("文本编译器");
    resize(400,500);
    
    //一.菜单栏
    QMenuBar* mBar=menuBar();
    //1.添加菜单
    QMenu* pFile=mBar->addMenu("File");
    //2.添加菜单项,添加动作
    QAction* pNew=pFile->addAction("New Project");
    connect(pNew,&QAction::triggered,
            [=](){
        qDebug()<<"press New Project";
    }
            );
    pFile->addSeparator();//3.添加分割线
    QAction* pOpen=pFile->addAction("Open");
    connect(pOpen,&QAction::triggered,
            [=](){
        qDebug()<<"press Open";
    }
            );
            
    //二.工具栏
    //1.导航栏形式
    QToolBar* toolbar=addToolBar("ToolBar");
    toolbar->addAction(pNew);
    toolbar->addAction(pOpen);
    //2.按钮形式,添加小控件
    QPushButton* b1=new QPushButton(this);
    b1->setText("New Project");
    connect(b1,&QPushButton::released,
            [=](){
        b1->setText("Open");
    }
            );
    toolbar->addWidget(b1);
    
    //三.状态栏
    QStatusBar* sBar=statusBar();
    QLabel* label1=new QLabel(this);
    label1->setText("New Project");
    //addWidget从左往右添加
    sBar->addWidget(label1);
    sBar->addWidget(new QLabel("2",this));
    //addPermanentWidget从右往左添加
    sBar->addPermanentWidget(new QLabel("3",this));
    
    //四.核心控件
    //1.文本框
    QTextEdit* tEdit=new QTextEdit(this);
    setCentralWidget(tEdit);
    
    //五.浮动窗口
    QDockWidget* dWidget=new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea,dWidget);
    QTextEdit* tEdit1=new QTextEdit(this);//给浮动窗口添加文本框
    dWidget->setWidget(tEdit1);
}

在这里插入图片描述

二.模态对话框、非模态对话框

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("文本编辑器");
    this->resize(400,500);
    QMenuBar* mBar=menuBar();
    QMenu* menu1=mBar->addMenu("对话框");
    //一.模态对话框
    QAction* action1=menu1->addAction("模态对话框");
    connect(action1,&QAction::triggered,
            [=]()
    {
        QDialog dlg1;
        dlg1.exec();//执行到此,会卡在这里,等待用户关闭对话框,再执行下面程序。
        qDebug()<<"123";
    }
            );
    menu1->addSeparator();
    //二.非模块对话框
    QAction* action2=menu1->addAction("非模态对话框");
    connect(action2,&QAction::triggered,
            [=](){
        //方法一:设置为成员变量
        //dlg2.show();//程序执行到这里,会继续执行下去,因此定义成成员变量,防止对话框不出现。
        //qDebug()<<"456";
        //方法二:定义为指针
        QDialog* dlg3=new QDialog;
        dlg3->setAttribute(Qt::WA_DeleteOnClose);//在对话框关闭时,自动释放内存。
        dlg3->show();
        qDebug()<<"789";
    }
            );
    menu1->addSeparator();
    QAction* action3=menu1->addAction("directory");
}
#include <QMainWindow>
#include <QDialog>
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
    //方法一:设置为成员变量
     QDialog dlg2;
};

在这里插入图片描述

三.标准对话框

关于对话框、问题对话框。

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("文本编辑器");
    this->resize(400,500);
    QMenuBar* mBar=menuBar();
    QMenu* menu1=mBar->addMenu("对话框");
    //三.关于对话框
    QAction* action3=menu1->addAction("关于对话框");
    connect(action3,&QAction::triggered,
            [=](){
        QMessageBox::about(this,"about","关于Qt");
    }
            );
    //四.问题对话框
    QAction* action4=menu1->addAction("问题对话框");
    connect(action4,&QAction::triggered,
            [=](){
        int ret=QMessageBox::question(this,"question","Are you OK?");
        switch (ret) {//获取问题对话框返回值
        case QMessageBox::Yes:
            qDebug()<<"I am OK";
            break;
        case QMessageBox::No:
            qDebug()<<"I am Bad";
            break;
        default:
            break;
        }
        //修改默认按钮Yes和No
        //int ret=QMessageBox::question(this,"question","Are you OK?",QMessageBox::Open|QMessageBox::Save);
    }
            );
}

在这里插入图片描述
在这里插入图片描述
点击Yes结果:
在这里插入图片描述
修改默认按钮Yes、No:
在这里插入图片描述

四.文件对话框

#include "mainwindow.h"
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QDialog>
#include <QDebug>
#include <QMessageBox>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    this->setWindowTitle("文本编辑器");
    this->resize(400,500);
    QMenuBar* mBar=menuBar();
    QMenu* menu1=mBar->addMenu("对话框");
    //五.文件对话框
    QAction* action5=menu1->addAction("文件对话框");
    connect(action5,&QAction::triggered,
            [=](){
       QString FilePath=QFileDialog::getOpenFileName(this,"open","../");
       qDebug()<<FilePath;
    }
            );
}

在这里插入图片描述
在这里插入图片描述
给文件对话框加入过滤:

connect(action5,&QAction::triggered,
        [=](){
   QString FilePath=QFileDialog::getOpenFileName(this,"open","../",
   "source(*.cpp *.h);;Text(*.txt);;all(*.*)");
   qDebug()<<FilePath;
}
        );

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值