QT+ 使用标准对话框+关于对话框+问题对话框+文件对话框

#include "mainwindow.h"
#include <QMenuBar>
#include <QMenu>
#include <QAction>
#include <QDialog>
#include<QDebug>

#include <QMessageBox>
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{

    QMenuBar *mBar = menuBar();
    setMenuBar(mBar);
    QMenu *menu = mBar->addMenu("对话框");

    //使用标准对话框
    //关于对话框
    QAction *p3 = menu->addAction("关于对话框");
    connect(p3,&QAction::triggered,[=](){

        /*经过查看QmessageBox的帮助文档,里面的Static Public Members,查看里面的about函数的使用方法
         * 从Static Public Members得知其是静态的成员函数,这里就涉及到调用类里面的静态的成员函数。即通过类名调用;
         * 最后的调用方式如下:
         * QMessageBox::about(this,"about","关于QT");
         *
        */
        QMessageBox::about(this,"about","关于QT");
    });

    //问题对话框
    QAction *p4 = menu->addAction("问题对话框");
    connect(p4,&QAction::triggered,[=](){
        /*这里的问题对话框的创建过程和上一个差不多,但是有一个地方需要注意,问题对话框上面有两个按钮,
         * 怎么知道我点击了哪一个按钮?
         * 通过查看QMessageBox的帮助文档,Public Types 里面的 StandardButton里面的内容,可以看到枚举的不同按钮
         * 得知其会返回一个值,所以我们定义一个值用来接收,如下:
         * int ret =   QMessageBox::question(this,"question","ARE YOU OK ?");
         *
         * 当然了,有的时候我们并不想只有YES和NO这两个按钮,这里也是可以改变的,改变的代码如下:
         * int ret =   QMessageBox::question(this,"question","ARE YOU OK ?",QMessageBox::OK|QMessageBox::Cancel);
         * 此时里面的按钮就会变成OK键和cancel键了。
        */
          int ret =   QMessageBox::question(this,"question","ARE YOU OK ?");
            switch(ret)
            {
                case QMessageBox::Yes:
                qDebug()<<"I am OK ";
                break;
            case QMessageBox::No:
                qDebug()<<"NO OK";
                break;
            default:
                break;
            }
    });

    //文件对话框
    QAction *p5 = menu->addAction("文件对话框");
    connect(p5,&QAction::triggered,[=](){

        /*打开一个文件,显示内容,显示路径,
         * 通过查看getOpenFileName里面的内容,(其实里面已经有写好的例子)
         * QFileDialog::getOpenFileName(this,"open","../");会有一个返回值,
         * QString path = QFileDialog::getOpenFileName(this,"open","../");
         * 如果想打开指定格式的文件怎么写?
         * 注意:当想有多种类型的文件打开时,使用两个;;来进行表示
         *
        */
        QString path = QFileDialog::getOpenFileName(this,"open","../","source(*.cpp *.h);;Text(*.txt);;all(*.*)");
        qDebug()<<path;
    });

}

MainWindow::~MainWindow()
{

}

 getOpenFileName(this,"open","../","source(*.cpp *.h);;Text(*.txt);;all(*.*)");中的"source(*.cpp *.h);;Text(*.txt);;all(*.*)"很长的时候,可以在;;后直接按enter换行,这样操作在QT里面是没有问题的。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

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

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();
     QDialog dlg;//自定义为全局变量(成员变量)
};

#endif // MAINWINDOW_H

猜你喜欢

转载自www.cnblogs.com/doker/p/11031134.html