Qt_Note3_MainWindow&QDialog&QMessageBox

MainWindow-代码生成主窗口部件

使用代码生成菜单栏、工具栏、状态栏、中心部件、衔接部件(浮动窗口)
菜单栏、状态栏、中心部件:在主窗口中只能存在一个,使用set指令进行添加
工具栏、衔接部件:可以存在多个,使用add指令进行添加

示例程序1:

#include "Mainwindow.h"
#include "ui_mainwindow.h"
#include <QToolBar>
#include <QPushButton>
#include <QLabel>
#include <QTextEdit>
#include <QDockWidget>//浮动窗口
#include <QDialog>
#include <QFileDialog>//文件对话框
#include <QColorDialog>//颜色对话框
#include <QFontDialog>//文字对话框
#include <QMessageBox>//消息对话框 警告、普通、错误
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //菜单栏 在主窗口只存在一个set
    QMenuBar *menuBar = new QMenuBar;
    this->setMenuBar(menuBar);//设置菜单栏
    QMenu *menu = menuBar->addMenu("文件");
    menu->addAction("打开");
    menu->addSeparator();
    menu->addAction("新建");
    menuBar->addMenu("编辑");

    //工具栏 在主窗口可以有多个add
    QToolBar *toolBar = new QToolBar;
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);//设置允许停靠范围
    toolBar->setMovable(false);//是否可以移动
    toolBar->setFloatable(false);//是否可悬浮
    this->addToolBar(Qt::TopToolBarArea, toolBar);//设置工具栏
    toolBar->addAction("编辑");
    toolBar->addSeparator();//添加分割线
    toolBar->addAction("打开");

    //状态栏 set只能有一个
    QStatusBar *status = new QStatusBar;
    status->addAction(new QAction("FPS:600"));
    status->addWidget(new QPushButton("FPS:600"));//添加按钮
    status->addWidget(new QLabel("PIN:600"));//添加文本
    status->addPermanentWidget(new QLabel("今天天气真不赖"));//在右边添加

    this->setStatusBar(status);

    //中心部件 set只能有一个
    this->setCentralWidget(new QTextEdit("请输入..."));

    //衔接部件(浮动窗口) add可以有多个
    QDockWidget *dock = new QDockWidget("文本1");
    dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);//设置允许停靠范围
    this->addDockWidget(Qt::DockWidgetArea::BottomDockWidgetArea, dock);

//    ui->menunum1->setTitle("开始执行但不调试");

示例程序2:

#include "mainwindow.h"
#include <QMenuBar>
#include <QToolBar>
#include <QDebug>
#include <QStatusBar>
#include <QPushButton>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    //重置窗口大小
    resize(600, 400);

    //菜单栏 最多只能有一个

    //菜单栏创建
    QMenuBar * bar = menuBar();
    //将菜单栏放入到窗口中
    setMenuBar(bar);

    //创建菜单
    QMenu * fileMenu = bar->addMenu("文件");
    QMenu * editMenu = bar->addMenu("编辑");

    //创建菜单项
    QAction * newAction =fileMenu->addAction("新建");
    //添加分隔线
    fileMenu->addSeparator();
    QAction * openAction =fileMenu->addAction("打开");


    //工具栏  可以有多个
    QToolBar * toolBar = new QToolBar(this);
    addToolBar(Qt::LeftToolBarArea, toolBar);

    //后期设置 只允许 左右停靠
    toolBar->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);

    //设置浮动
    toolBar->setFloatable(false);

    //设置移动(总开关)
    toolBar->setMovable(false);

    //工具栏中可以设置内容
    toolBar->addAction(newAction);
    toolBar->addSeparator();
    toolBar->addAction(openAction);

    //工具栏中添加控件
    QPushButton *btn = new QPushButton("aa", this);
    toolBar->addWidget(btn);

    //状态栏 最多有一个
    QStatusBar *stBar = statusBar();
    //设置到窗口中
    setStatusBar(stBar);
    //放标签控件
    QLabel *label = new QLabel("提示信息", this);
    stBar->addWidget(label);

    QLabel *label2 = new QLabel("右侧提示信息", this);
    stBar->addPermanentWidget(label2);

    //铆接部件(浮动窗口)
    QDockWidget * dockWidget = new QDockWidget("浮动", this);
    addDockWidget(Qt::BottomDockWidgetArea, dockWidget);
    //设置后期停靠区域,只允许上下
    dockWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    //设置中心部件 只能一个
    QTextEdit * edit = new QTextEdit(this);
    setCentralWidget(edit);
}

MainWindow::~MainWindow()
{
}


QDialog&QMessageBox

对话框(模态、非模态)、消息对话框、颜色对话框、文件对话框、字体对话框

示例程序3

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDialog>
#include <QtDebug>
#include <QMessageBox>
#include <QColorDialog>
#include <QFileDialog>
#include <QFontDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    //点击新建按钮,弹出一个对话框
    connect(ui->actionnew, &QAction::triggered, [=](){
        //对话框 分类
        //模态对话框(不可以对其他窗口进行操作)  非模态对话框(可以对其他窗口进行操作)
        //模态创建  阻塞
        QDialog dlg(this);
        dlg.resize(400, 200);
        dlg.exec();     //代码阻塞

        qDebug() << "模态对话框弹出了" << endl;

        //非模态对话框
        QDialog *dlg2 = new QDialog(this);
        dlg2->resize(400, 200);
        dlg2->show();
        dlg2->setAttribute(Qt::WA_DeleteOnClose);   //55号 属性 关闭小窗口即释放内存
        qDebug() << "非模态对话框弹出了" << endl;


        //消息对话框
        //错误对话框
        QMessageBox::critical(this, "critical", "错误");

        //信息对话框
        QMessageBox::information(this, "info", "信息");

        //问题对话框
        //参数1  父亲  参数2  标题  参数3  提示内容  参数4  按键类型  参数5  默认关联回车按键
        if (QMessageBox::Save == QMessageBox::question(this, "ques", "提问", QMessageBox::Save|QMessageBox::Cancel, QMessageBox::Cancel))
        {

            qDebug() << "选择的是保存" << endl;
        }
        else
        {
            qDebug() << "选择的是取消" << endl;
        }

        //警告对话框
        QMessageBox::warning(this, "warning", "警告");

        //其他标准对话框
        //颜色对话框
        QColor color = QColorDialog::getColor(QColor(255, 0, 0));
        qDebug() << "r = " << color.red() << "g = " << color.green() << "b = " << color.blue() << endl;

        //文件对话框 参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件格式
        //返回值是 选取的路径
        QFileDialog::getOpenFileName(this, "打开文件", "C:/Users/ds/Desktop");
        QString str = QFileDialog::getOpenFileName(this, "打开文件", "C:\\Users\\ds\\Desktop", "(*.docx)");
         qDebug() << str << endl;

        //字体对话框
        bool flag;
        QFont font = QFontDialog::getFont(&flag, QFont("宋体", 36));
        qDebug() << "字体:" << font.family().toUtf8().data() << "字号:" << font.pointSize() << "是否加粗: " << font.bold()
                 << "是否倾斜:" << font.italic() << endl;



    });
}

MainWindow::~MainWindow()
{
    delete ui;
}

示例程序4(头文件衔接上面MainWindow示例程序1)

    //对话框  QT中内置了大量的对话框 供开发者使用
    //自定义对话框
    //1.模态对话框:阻塞式对话框 无法对其他对话框做操作
    //2.非模态对话框:非阻塞式 激活时可以对其他窗口做操作

    //模态对话框
    connect(ui->btn_1, &QPushButton::clicked, [this](){
       //创建窗口 new不对,每点一次就new一个,不太好
        QDialog dialog(this);
        dialog.resize(400, 400);
        dialog.exec(); //进入消息捕捉循环
//        dialog.show();
    });
    connect(ui->btn_2, &QPushButton::clicked, [this](){
//        QDialog dialog(this);
//        dialog.resize(400, 400);

//        dialog.exec(); //进入消息捕捉循环
//        dialog.show();

        //方式二
        QDialog *dialog = new QDialog(this);
        dialog->resize(400, 400);
        dialog->show();
        dialog->setAttribute(Qt::WA_DeleteOnClose);   //55号 属性 关闭小窗口即释放内存

    });
    /*系统内置对话框(标准对话框)
     * 1.文件对话框
     * 2.颜色对话框
     * 3.文字对话框
     * 4.消息对话框  (1 父亲 2 标题 3 内容 4 按钮 5 回车时默认选择)
     */
    connect(ui->file_btn, &QPushButton::clicked, [this](){
        //文件对话框
        //参数1 父亲 参数2 标题 参数3 默认打开路径 参数4 过滤文件类型
        QString fileName = QFileDialog::getOpenFileName(this, "打开文本文件", "C:\\Users\\ds\\Desktop", "(*.docx)");
        qDebug() << fileName;

        //颜色对话框
        //默认颜色 父亲 标题
        auto color = QColorDialog::getColor(Qt::blue, this, "文字颜色");
        ui->textEdit->setTextColor(color);
        ui->textEdit->setText("jjjjjjj");

        //文字对话框
        bool bl = true;//是否使用用户选择的字体
        QFont font = QFontDialog::getFont(&bl);
        ui->label->setFont(font);
        ui->label->setText("hello");
        qDebug() << bl;

        //消息对话框
        QMessageBox::critical(this, "错误", "你闹坏了", QMessageBox::No);
        QMessageBox::warning(this, "警告", "你闹坏了");
        QMessageBox::information(this, "提示", "你闹坏了");

        auto btn = QMessageBox::question(this, "问题", "你爱我吗", QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
        if(btn == QMessageBox::Yes)
        {
            QMessageBox::information(this, "", "我也爱你");
        }
        else
        {
            QMessageBox::information(this, "", "滚吧");
        }
    });
}
MainWindow::~MainWindow()
{
    delete ui;
}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可可西里啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值