Qt之菜单栏、工具栏、核心控件、浮动窗口、模态对话框、文件对话框

**

初学Qt 代码笔记:

** mainwindow.cpp

#include "mainwindow.h"
#include<QMenuBar>  //菜单栏
#include<QMenu>//菜单项
#include<QAction>//动作
#include<QDebug>//打印
#include<QToolBar>//工具栏
#include<QPushButton>
#include<QStatusBar>//状态栏
#include<QLabel>//标签
#include<QTextEdit>//文本编辑
#include<QDockWidget>//浮动窗口
#include<QDialog>//对话框
#include<QMessageBox>//信息盒子
#include<QFileDialog>//文件对话框
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    resize(640,480);
    //菜单栏
    QMenuBar *mBar = menuBar();//QMenuBar * menuBar()const
    setMenuBar(mBar);//设置菜单栏
    //添加菜单
    QMenu *pFile = mBar->addMenu("文件");
    //添加动作
    QAction *pNew = pFile->addAction("新建");
    connect(pNew,&QAction::triggered,
            [=]()
            {
               qDebug()<<"新建被按下";
            }

            );
    pFile->addSeparator();//给动作添加分割线
    QAction *pOpen = pFile->addAction("打开");
    pFile->addSeparator();
    QAction *pSave = pFile->addAction("保存");


    //工具栏,菜单项的快捷方式。
    QToolBar *toolBar = addToolBar("toolBar");
    //工具栏添加快捷键。
    toolBar->addAction(pNew);
    QPushButton *b1 = new QPushButton(this);
    b1->setText("<_>");
    //添加小控件
    toolBar->addWidget(b1);
    connect(b1,&QPushButton::clicked,
            [=]()
    {
        b1->setText("123");
    }

            );
    //状态栏
    QStatusBar *StatusBar = statusBar();
    QLabel *label = new QLabel(this);
    label->setText("Normal text file");
    StatusBar->addWidget(label);
    StatusBar->addPermanentWidget(label);//从右往左。
    //核心控件
    QTextEdit *textEdit = new QTextEdit(this);
    setCentralWidget(textEdit);
    //浮动窗口
    QDockWidget *dockWidget = new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea,dockWidget);
    QTextEdit *textEdit1 = new QTextEdit(this);
    dockWidget->setWidget(textEdit1);

    QMenu *pDialog = mBar->addMenu("对话框");
    QAction *p1 = pDialog->addAction("模态对话框");//为什么不设置返回值也可以????
    //设置返回值作为发射信号者。
    connect(p1,&QAction::triggered,
            [=]()
    {

        dlg.exec();//等待事件发生!!!
        //然后执行...
        qDebug()<<"123";
    }
            );
    QAction *p2 = pDialog->addAction("非模态对话框");
    connect(p2,&QAction::triggered,
            [=]()
    {

        dlg.show();//利用成员变量显示对话框!!!!!!
        //然后执行...

        qDebug()<<"123";
    }
            );
    QAction *p4 = pDialog->addAction("问题对话框");
    connect(p4,&QAction::triggered,
            [=] ()
    {
        int ret = QMessageBox::question(this,
                                        "question","Are you OK?",
                                       QMessageBox::Ok,
                                       QMessageBox::Cancel);
                                       //指定按钮。
        switch(ret)
        {
        case QMessageBox::Ok:
            qDebug()<<"ok";
            break;
        case QMessageBox::Cancel:
            qDebug()<<"bad";
            break;
        default:
            break;
        }
    }
            );


    QMenu *pHelp = mBar->addMenu("帮助");
    QAction *p3 = pHelp->addAction("关于");
    connect(p3,&QAction::triggered,
            [=]()
    {
        QMessageBox::about(this,"帮助","爱我就抱抱我!");

    });


    QAction *p5 = pDialog->addAction("打开文件对话框");
    connect(p5,&QAction::triggered,
            [=]()
    {
        QString path = QFileDialog::getOpenFileName(this,
                                            "open","../",
                           "Images (*.png *.xpm *.jpg);;"
                           "Text(*.txt);;XML(*.xml);;all(*.*)");
        qDebug()<<path;
    }

            );

}

MainWindow::~MainWindow()
{
}


main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwidow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include<QDialog>
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);

    QDialog dlg;

    ~MainWindow();
};
#endif // MAINWINDOW_H

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论 1

打赏作者

刘善昌

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值