QT 程序详解(以MDI为案例)

  传统的应用程序设计中有多文档界面(Multi-document Interface,MDI)应用程序,Qt 为设计 MDI 应用程序提供了支持。

目录

 运行效果如下:

qformdoc.ui界面如下:

 qwmainwindow.ui界面如下:

main.cpp

qformdoc.h

qformdoc.cpp

ui_qformdoc

qwmainwindow.h

qwmainwindow.cpp

ui_qwmainwindow

 运行效果如下:

QT 程序详解(以MDI为案例)_第1张图片

qformdoc.ui界面如下:

QT 程序详解(以MDI为案例)_第2张图片

 qwmainwindow.ui界面如下:

QT 程序详解(以MDI为案例)_第3张图片

main.cpp

//在C++里,任何窗体或界面组件都是用类封装的,一个类一般有一个头文件(.h文件)和一个源程序文件(.cpp文件)
//.h文件是所设计的窗体类的头文件,.cpp文件是定义类的实现文件
//mian.cpp是主程序入口文件


#include "qwmainwindow.h"//引入所设计的窗体类的头文件
#include //QGuiApplication的子类,为基于QWidget的应用程序提供支持,包括界面的初始化等
//在有中文的类,头文件声明中加上  #pragma execution_character_set("utf-8")   解决汉子乱码问题/


int main(int argc, char* argv[])
{

    QApplication a(argc, argv);//定义并创建应用程序/定义一个实例a,也就是应用程序对象
    MainWindow w;//定义并创建窗口/定义一个MainWindow类的变量w,MainWindow是本实例设计的窗口的类名(基类:QMainWindow/QWidget/QDialog)
    w.show();//显示窗口
    return a.exec();//应用程序运行
}

qformdoc.h


#ifndef QFORMDOC_H
#define QFORMDOC_H
//头文件定义时的一个常用方法,为了避免重复包含同一个头文件。#pragma once具有类似的作用
//(1)防止重复定义的错误;
//(2)如果这个头文件变化,那么所有include这个文件的源文件都需要重新编译,即使没有去使用里面的任何内容

#include 
//窗体继承的基类为QWidget,基类还有QMainWindow、QDialog,共三种
//一.QMainWindow:
//QMainWindow类提供一个带有菜单条,工具条和一个状态条的主应用程序窗口。主窗口通常提供一个大的中央窗口部件,以及周围菜单,工具条,和一个状态栏。QMainWindow窗口经常被继承,使得封装中央部件,菜单,工具条,状态栏等都变得很容易,当用户点击它的时候,相应的槽就会被调用。
//二.QWidget
//QWidet类是所有用户界面对象的基类,窗口部件是用户界面的一个基本单元,它从窗口系统接收鼠标,键盘和其他消息,并在屏幕上绘制自己。一个窗口部件可以被他的父窗口或者是其他窗口挡住一部分。
//三.QDialog
//QDialog类是对话框窗口的基类,对话框窗口主要用于短期任务和用户进行短期通讯的顶级窗口,QDialog可以是模态对话框或者是非模态对话框。QDialog支持扩展并带有返回值,他们可以带有默认值

namespace Ui { class QFormDoc; }
//声明一个名称为Ui的命名空间,包含一个类QFormDoc,这个类QFormDoc并不是本文件里定义的QFormDoc,而是ui_**文件里定义的类,用于描述界面组件的
//

//QFormDoc类的定义
class QFormDoc : public QWidget//窗口类
//窗体类继承的基类为QWidget
//在C++里,任何窗体或界面组件都是用类封装的,一个类一般有一个头文件(.h文件)和一个源程序文件(.cpp文件)
//.h文件是所设计的窗体类的头文件,.cpp文件是定义类的实现文件
{
    Q_OBJECT//使用宏Q_OBJECT,这是使用Qt的信号与槽机制的类都必须加入的一个宏

private://私有成员
    QString mCurrentFile; //当前文件
    bool    mFileOpened = false; //文件已打开

public://公共成员
    explicit QFormDoc(QWidget* parent = 0);//构造函数
//explicit修饰构造函数,禁止隐式类型转换
//默认值为0,表明没有父窗口
//QWidget的构造函数有两个参数:“QWidget * parent = 0”和“Qt::WindowFlags f = 0”。
//前面一个参数是指父窗口部件,默认值为0,表明没有父窗口;后面一个参数是Qt::WindowFlags的枚举类型,分为窗口类型(窗口的样式)和窗口标志(更改窗口的标题栏和边框),可以进行位或操作。
    ~QFormDoc();//析构函数

    void    loadFromFile(QString& aFileName); //打开文件
    QString currentFileName();//返回当前文件名
    bool    isFileOpened();//文件已经打开
    void    setEditFont();//设置字体
    void    textCut(); //cut
    void    textCopy(); //copy
    void    textPaste(); //paste

private:
    Ui::QFormDoc* ui;
    //定义一个指针,这个指针是用前面声明的namespace Ui里的QFormDoc类定义的,所以指针ui指向可视化设计的界面,后面会看到要访问界面上的组件,都需要通过这个指针ui
};


#endif // QFORMDOC_H

qformdoc.cpp

#include "qformdoc.h"//引入窗体类的头文件
#include "ui_qformdoc.h"//在对qformDoc.ui文件编译后生成的一个文件,引入到此

#include    //垂直布局
#include    //QFile 类支持对文件进行读取、写入、删除、重命名、拷贝等操作,它既可以操作文件文件,也可以操作二进制文件。
#include    //QTextStream提供了读写文本文件的接口
#include    //QFontDialog类用于提供选择字体的对话框部件
#include    //文件目录操作相关的类:用于提取文件的信息,包括路径/文件名/删除文件等功能
#include    //QMessageBox类提供一个模态对话框,用于通知用户或询问用户一个问题并接收答案。

QFormDoc::QFormDoc(QWidget* parent) : QWidget(parent), ui(new Ui::QFormDoc)
//构造函数:执行父类QWidget的构造函数,创建一个Ui::QFormDoc类的对象ui,这个ui就是QFormDoc的private部分定义的指针变量ui
{
    ui->setupUi(this);
    //执行了Ui::QFormDoc类的setupUi()函数,这个函数实现窗口的生成与各种属性的设置/信号与槽的关联
    this->setWindowTitle("New Doc"); //窗口标题
    this->setAttribute(Qt::WA_DeleteOnClose); //关闭时自动删除
}

QFormDoc::~QFormDoc()//析构函数
{
    //    QMessageBox::information(this,"信息","文档窗口被释放");
    delete ui;//删除用new创建的指针ui
}



void QFormDoc::loadFromFile(QString& aFileName)
{//打开文件
    QFile aFile(aFileName);  //以文件方式读出
    //创建QFile对象时可以在构造函数里指定文件名,也可以用setFileName()指定文件
    if (aFile.open(QIODevice::ReadOnly | QIODevice::Text)) //以只读文本方式打开文件
    {
        QTextStream aStream(&aFile); //用文本流读取文件
        ui->plainTextEdit->clear();//清空
        ui->plainTextEdit->setPlainText(aStream.readAll()); //读取文本文件
        aFile.close();//关闭文件

        mCurrentFile = aFileName;//保存当前文件名
        QFileInfo   fileInfo(aFileName); //文件信息
        //创建QFile对象时可以指定一个文件名作为当前文件,也可以用setFile()指定文件
        QString str = fileInfo.fileName(); //返回去除路径后的文件名
        this->setWindowTitle(str);
        mFileOpened = true;
    }
}

QString QFormDoc::currentFileName()
{
    return  mCurrentFile;
}

bool QFormDoc::isFileOpened()
{ //文件是否已打开
    return mFileOpened;
}

void QFormDoc::setEditFont()
{
    QFont   font;
    font = ui->plainTextEdit->font();//获取控件的font

    bool    ok;//如果ok参数不为null,则在用户单击“确定”时将其引用的值设置为true,在用户单击“取消”的情况下将其设置为false。
    font = QFontDialog::getFont(&ok, font);//执行模式字体对话框并返回字体。如果用户单击“确定”,则返回所选字体。 如果用户单击“取消”,则返回初始字体。
    ui->plainTextEdit->setFont(font);
}

void QFormDoc::textCut()
{
    ui->plainTextEdit->cut();
}

void QFormDoc::textCopy()
{
    ui->plainTextEdit->copy();
}

void QFormDoc::textPaste()
{
    ui->plainTextEdit->paste();
}

ui_qformdoc

/********************************************************************************
** Form generated from reading UI file 'qformdoc.ui'
**
** Created by: Qt User Interface Compiler version 5.12.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_QFORMDOC_H
#define UI_QFORMDOC_H

#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE

class Ui_QFormDoc
{
public:
    QVBoxLayout *verticalLayout;
    QPlainTextEdit *plainTextEdit;

    void setupUi(QWidget *QFormDoc)
    {
        if (QFormDoc->objectName().isEmpty())
            QFormDoc->setObjectName(QString::fromUtf8("QFormDoc"));
        QFormDoc->resize(931, 572);
        QFont font;
        font.setPointSize(10);
        QFormDoc->setFont(font);
        verticalLayout = new QVBoxLayout(QFormDoc);
        verticalLayout->setSpacing(3);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        verticalLayout->setContentsMargins(3, 3, 3, 3);
        plainTextEdit = new QPlainTextEdit(QFormDoc);
        plainTextEdit->setObjectName(QString::fromUtf8("plainTextEdit"));
        QFont font1;
        font1.setFamily(QString::fromUtf8("\345\256\213\344\275\223"));
        plainTextEdit->setFont(font1);

        verticalLayout->addWidget(plainTextEdit);


        retranslateUi(QFormDoc);

        QMetaObject::connectSlotsByName(QFormDoc);
    } // setupUi

    void retranslateUi(QWidget *QFormDoc)
    {
        QFormDoc->setWindowTitle(QApplication::translate("QFormDoc", "new document", nullptr));
    } // retranslateUi

};

namespace Ui {
    class QFormDoc: public Ui_QFormDoc {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_QFORMDOC_H

qwmainwindow.h

#ifndef QWMAINWINDOW_H
#define QWMAINWINDOW_H

#include    
#include    "qformdoc.h"

#include    
//QMdiArea一般使用于主窗口中,用于容纳多个子窗口QMdiSubWindow
//MDI应用程序就是再主窗口里创建多个同类型的MDI子窗口,这些MDI子窗口在主窗口里显示,并共享主窗口上的工具栏和菜单等操作功能,主窗口上的操作都针对当前活动的MDI子窗口进行

namespace Ui { class QWMainWindow; }

class QWMainWindow : public QMainWindow//窗口类继承的基类为QMainWindow
{
    Q_OBJECT
private:
    void closeEvent(QCloseEvent* event); //主窗口关闭时关闭所有子窗口
public://构造函数/析构函数
    explicit QWMainWindow(QWidget* parent = 0);
    ~QWMainWindow();

private slots:
    void on_actDoc_Open_triggered(); //打开文件
    void on_actDoc_New_triggered(); //新建文件
    void on_actCut_triggered(); //cut
    void on_actFont_triggered();  //设置字体
    void on_actCopy_triggered();  //copy
    void on_actPaste_triggered(); //paste

    void on_mdiArea_subWindowActivated(QMdiSubWindow* arg1); //子窗口被激活
    void on_actViewMode_triggered(bool checked); //MDI 模式设置
    void on_actCascade_triggered(); //级联形式显示子窗口
    void on_actTile_triggered(); //平铺形式显示子窗口
    void on_actCloseALL_triggered(); //关闭全部子窗口

private:
    Ui::QWMainWindow* ui;
};

#endif // QWMAINWINDOW_H

qwmainwindow.cpp

#include "qwmainwindow.h"
#include "ui_qwmainwindow.h"

#include    
#include    
#include    

void QWMainWindow::closeEvent(QCloseEvent* event)
{
    ui->mdiArea->closeAllSubWindows(); //关闭所有子窗口
    event->accept();
}

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

    this->setCentralWidget(ui->mdiArea);// 一个Qt主窗口应用程序必须有一个中心窗口部件(Central Widget)。当你采用Qt Designer创建主窗口时,默认情况下,系统已经为你创建了一个中心窗口部件,它是子类化QWidget的。
    this->setWindowState(Qt::WindowMaximized); //窗口最大化显示
    ui->mainToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//Qt ToolBar工具栏里同时显示图标和文字
    //    this->setAutoFillBackground(true);
}

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

void QWMainWindow::on_actDoc_Open_triggered()
{//打开文件
//必须先获取当前MDI子窗口,再使用打开文件对话框,否则无法获得活动的子窗口
    bool needNew = false;// 是否需要新建子窗口

    QFormDoc* formDoc;
    if (ui->mdiArea->subWindowList().count() > 0) //如果有打开的主窗口,获取活动窗口/QMdiSubWindow::subWindowList()可以获得子窗口对象列表,从而可以判断子窗口的个数
    {
        formDoc = (QFormDoc*)ui->mdiArea->activeSubWindow()->widget();//如果有MDI子窗口,则总有一个活动窗口,通过QMdiSubWindow::activeSubWindow()可以获得此活动的子窗口
        needNew = formDoc->isFileOpened();//判断是否打开了文件文件已经打开
    }
    else
        needNew = true;

    QString curPath = QDir::currentPath();//返回当前目录名称
    //QDir用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统。它也可以用来访问Qt的资源系统。
    QString aFileName = QFileDialog::getOpenFileName(this, tr("打开一个文件"), curPath,"C程序文件(*.h *cpp);;文本文件(*.txt);;所有文件(*.*)");
    //使用QFileDialog的静态函数创建了一个模态对话框。该对话框初始状态会显示"/curPath"目录中的内容
    //并且只会展示那些与字符串中指定的格式相匹配文件。对话框的父亲被设为this,并且窗口标题为"打开一个文件”,
    if (aFileName.isEmpty())
        return; //如果未选择文件,退出

    if (needNew) //需要新建子窗口
    {
        formDoc = new QFormDoc(this);//指定父窗口,必须在父窗口为Widget窗口提供一个显示区域
        ui->mdiArea->addSubWindow(formDoc);
    }

    formDoc->loadFromFile(aFileName); //打开文件
    formDoc->show(); //在单独的窗口中显示

    ui->actCut->setEnabled(true);
    ui->actCopy->setEnabled(true);
    ui->actPaste->setEnabled(true);
    ui->actFont->setEnabled(true);
}


void QWMainWindow::on_actDoc_New_triggered()
{ //新建文件
    QFormDoc* formDoc = new QFormDoc(this); //新建子窗口
    ui->mdiArea->addSubWindow(formDoc); //文档窗口添加到MDI
    formDoc->show(); //在单独的窗口中显示

    ui->actCut->setEnabled(true);
    ui->actCopy->setEnabled(true);
    ui->actPaste->setEnabled(true);
    ui->actFont->setEnabled(true);
}

void QWMainWindow::on_actCut_triggered()
{ //cut
    QFormDoc* formDoc = (QFormDoc*)ui->mdiArea->activeSubWindow()->widget();//获得当前活动子窗口
    formDoc->textCut();
}

void QWMainWindow::on_actFont_triggered()
{//设置字体
    QFormDoc* formDoc = (QFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    formDoc->setEditFont();
}

void QWMainWindow::on_actCopy_triggered()
{//copy
    QFormDoc* formDoc = (QFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    formDoc->textCopy();
}

void QWMainWindow::on_actPaste_triggered()
{//paste
    QFormDoc* formDoc = (QFormDoc*)ui->mdiArea->activeSubWindow()->widget();
    formDoc->textPaste();
}

void QWMainWindow::on_mdiArea_subWindowActivated(QMdiSubWindow* arg1)
{//当前活动子窗口切换时
    Q_UNUSED(arg1);//宏 Q_UNUSED消除因定义但却未引用的局部变量而引起的警告
    if (ui->mdiArea->subWindowList().count() == 0)
    { //若子窗口个数为零
        ui->actCut->setEnabled(false);
        ui->actCopy->setEnabled(false);
        ui->actPaste->setEnabled(false);
        ui->actFont->setEnabled(false);
        ui->statusBar->clearMessage();
    }
    else
    {
        QFormDoc* formDoc = static_cast(ui->mdiArea->activeSubWindow()->widget());
        ui->statusBar->showMessage(formDoc->currentFileName()); //显示主窗口的文件名
    }
}

void QWMainWindow::on_actViewMode_triggered(bool checked)
{//MDI 显示模式
    if (checked) //Tab多页显示模式
    {
        ui->mdiArea->setViewMode(QMdiArea::TabbedView); //Tab多页显示模式
        ui->mdiArea->setTabsClosable(true); //页面可关闭
        ui->actCascade->setEnabled(false);
        ui->actTile->setEnabled(false);
    }
    else 子窗口模式
    {
        ui->mdiArea->setViewMode(QMdiArea::SubWindowView); //子窗口模式
        ui->actCascade->setEnabled(true); //
        ui->actTile->setEnabled(true); //
    }
}

void QWMainWindow::on_actCascade_triggered()
{ //窗口级联展开
    ui->mdiArea->cascadeSubWindows();
}

void QWMainWindow::on_actTile_triggered()
{//平铺展开
    ui->mdiArea->tileSubWindows();
}

void QWMainWindow::on_actCloseALL_triggered()
{//关闭全部子窗口
    ui->mdiArea->closeAllSubWindows();
}

ui_qwmainwindow

/********************************************************************************
** Form generated from reading UI file 'qwmainwindow.ui'
**
** Created by: Qt User Interface Compiler version 5.9.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_QWMAINWINDOW_H
#define UI_QWMAINWINDOW_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE

class Ui_QWMainWindow
{
public:
    QAction *actDoc_New;
    QAction *actQuit;
    QAction *actDoc_Open;
    QAction *actFont;
    QAction *actCut;
    QAction *actCopy;
    QAction *actPaste;
    QAction *actViewMode;
    QAction *actCascade;
    QAction *actTile;
    QAction *actCloseALL;
    QWidget *centralWidget;
    QMdiArea *mdiArea;
    QToolBar *mainToolBar;
    QStatusBar *statusBar;

    void setupUi(QMainWindow *QWMainWindow)
    {
        if (QWMainWindow->objectName().isEmpty())
            QWMainWindow->setObjectName(QStringLiteral("QWMainWindow"));
        QWMainWindow->resize(388, 249);
        actDoc_New = new QAction(QWMainWindow);
        actDoc_New->setObjectName(QStringLiteral("actDoc_New"));
        QIcon icon;
        icon.addFile(QStringLiteral(":/images/images/100.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actDoc_New->setIcon(icon);
        actQuit = new QAction(QWMainWindow);
        actQuit->setObjectName(QStringLiteral("actQuit"));
        QIcon icon1;
        icon1.addFile(QStringLiteral(":/images/images/132.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actQuit->setIcon(icon1);
        actDoc_Open = new QAction(QWMainWindow);
        actDoc_Open->setObjectName(QStringLiteral("actDoc_Open"));
        QIcon icon2;
        icon2.addFile(QStringLiteral(":/images/images/122.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actDoc_Open->setIcon(icon2);
        actFont = new QAction(QWMainWindow);
        actFont->setObjectName(QStringLiteral("actFont"));
        actFont->setEnabled(false);
        QIcon icon3;
        icon3.addFile(QStringLiteral(":/images/images/506.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actFont->setIcon(icon3);
        actCut = new QAction(QWMainWindow);
        actCut->setObjectName(QStringLiteral("actCut"));
        actCut->setEnabled(false);
        QIcon icon4;
        icon4.addFile(QStringLiteral(":/images/images/200.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actCut->setIcon(icon4);
        actCopy = new QAction(QWMainWindow);
        actCopy->setObjectName(QStringLiteral("actCopy"));
        actCopy->setEnabled(false);
        QIcon icon5;
        icon5.addFile(QStringLiteral(":/images/images/202.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actCopy->setIcon(icon5);
        actPaste = new QAction(QWMainWindow);
        actPaste->setObjectName(QStringLiteral("actPaste"));
        actPaste->setEnabled(false);
        QIcon icon6;
        icon6.addFile(QStringLiteral(":/images/images/204.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actPaste->setIcon(icon6);
        actViewMode = new QAction(QWMainWindow);
        actViewMode->setObjectName(QStringLiteral("actViewMode"));
        actViewMode->setCheckable(true);
        QIcon icon7;
        icon7.addFile(QStringLiteral(":/images/images/230.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actViewMode->setIcon(icon7);
        actCascade = new QAction(QWMainWindow);
        actCascade->setObjectName(QStringLiteral("actCascade"));
        QIcon icon8;
        icon8.addFile(QStringLiteral(":/images/images/400.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actCascade->setIcon(icon8);
        actTile = new QAction(QWMainWindow);
        actTile->setObjectName(QStringLiteral("actTile"));
        QIcon icon9;
        icon9.addFile(QStringLiteral(":/images/images/406.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actTile->setIcon(icon9);
        actCloseALL = new QAction(QWMainWindow);
        actCloseALL->setObjectName(QStringLiteral("actCloseALL"));
        QIcon icon10;
        icon10.addFile(QStringLiteral(":/images/images/128.bmp"), QSize(), QIcon::Normal, QIcon::Off);
        actCloseALL->setIcon(icon10);
        centralWidget = new QWidget(QWMainWindow);
        centralWidget->setObjectName(QStringLiteral("centralWidget"));
        mdiArea = new QMdiArea(centralWidget);
        mdiArea->setObjectName(QStringLiteral("mdiArea"));
        mdiArea->setGeometry(QRect(45, 10, 291, 176));
        QWMainWindow->setCentralWidget(centralWidget);
        mainToolBar = new QToolBar(QWMainWindow);
        mainToolBar->setObjectName(QStringLiteral("mainToolBar"));
        mainToolBar->setAutoFillBackground(true);
        mainToolBar->setToolButtonStyle(Qt::ToolButtonIconOnly);
        QWMainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar);
        statusBar = new QStatusBar(QWMainWindow);
        statusBar->setObjectName(QStringLiteral("statusBar"));
        QWMainWindow->setStatusBar(statusBar);

        mainToolBar->addAction(actDoc_New);
        mainToolBar->addAction(actDoc_Open);
        mainToolBar->addAction(actCloseALL);
        mainToolBar->addSeparator();
        mainToolBar->addAction(actCut);
        mainToolBar->addAction(actCopy);
        mainToolBar->addAction(actPaste);
        mainToolBar->addAction(actFont);
        mainToolBar->addSeparator();
        mainToolBar->addAction(actViewMode);
        mainToolBar->addAction(actCascade);
        mainToolBar->addAction(actTile);
        mainToolBar->addSeparator();
        mainToolBar->addAction(actQuit);

        retranslateUi(QWMainWindow);
        QObject::connect(actQuit, SIGNAL(triggered()), QWMainWindow, SLOT(close()));

        QMetaObject::connectSlotsByName(QWMainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *QWMainWindow)
    {
        QWMainWindow->setWindowTitle(QApplication::translate("QWMainWindow", "MDI\345\272\224\347\224\250\347\250\213\345\272\217", Q_NULLPTR));
        actDoc_New->setText(QApplication::translate("QWMainWindow", "\346\226\260\345\273\272\346\226\207\346\241\243", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actDoc_New->setToolTip(QApplication::translate("QWMainWindow", "\346\226\260\345\273\272\346\226\207\346\241\243\347\252\227\345\217\243", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actQuit->setText(QApplication::translate("QWMainWindow", "\351\200\200\345\207\272", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actQuit->setToolTip(QApplication::translate("QWMainWindow", "\351\200\200\345\207\272\346\234\254\347\263\273\347\273\237", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actDoc_Open->setText(QApplication::translate("QWMainWindow", "\346\211\223\345\274\200\346\226\207\346\241\243", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actDoc_Open->setToolTip(QApplication::translate("QWMainWindow", "\346\211\223\345\274\200\346\226\207\346\241\243", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actFont->setText(QApplication::translate("QWMainWindow", "\345\255\227\344\275\223\350\256\276\347\275\256", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actFont->setToolTip(QApplication::translate("QWMainWindow", "\345\255\227\344\275\223\350\256\276\347\275\256", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actCut->setText(QApplication::translate("QWMainWindow", "\345\211\252\345\210\207", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actCut->setToolTip(QApplication::translate("QWMainWindow", "\345\211\252\345\210\207", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actCopy->setText(QApplication::translate("QWMainWindow", "\345\244\215\345\210\266", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actCopy->setToolTip(QApplication::translate("QWMainWindow", "\345\244\215\345\210\266", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actPaste->setText(QApplication::translate("QWMainWindow", "\347\262\230\350\264\264", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actPaste->setToolTip(QApplication::translate("QWMainWindow", "\347\262\230\350\264\264", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actViewMode->setText(QApplication::translate("QWMainWindow", "MDI\346\250\241\345\274\217", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actViewMode->setToolTip(QApplication::translate("QWMainWindow", "\347\252\227\345\217\243\346\250\241\345\274\217\346\210\226\351\241\265\351\235\242\346\250\241\345\274\217", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actCascade->setText(QApplication::translate("QWMainWindow", "\347\272\247\350\201\224\345\261\225\345\274\200", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actCascade->setToolTip(QApplication::translate("QWMainWindow", "\347\252\227\345\217\243\347\272\247\350\201\224\345\261\225\345\274\200", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actTile->setText(QApplication::translate("QWMainWindow", "\345\271\263\351\223\272\345\261\225\345\274\200", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actTile->setToolTip(QApplication::translate("QWMainWindow", "\347\252\227\345\217\243\345\271\263\351\223\272\345\261\225\345\274\200", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
        actCloseALL->setText(QApplication::translate("QWMainWindow", "\345\205\263\351\227\255\345\205\250\351\203\250", Q_NULLPTR));
#ifndef QT_NO_TOOLTIP
        actCloseALL->setToolTip(QApplication::translate("QWMainWindow", "\345\205\263\351\227\255\346\211\200\346\234\211\347\252\227\345\217\243", Q_NULLPTR));
#endif // QT_NO_TOOLTIP
    } // retranslateUi

};

namespace Ui {
    class QWMainWindow: public Ui_QWMainWindow {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_QWMAINWINDOW_H

你可能感兴趣的:(QT学习,qt,c++,开发语言)