博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT5:重写closeEvent.
阅读量:7018 次
发布时间:2019-06-28

本文共 4027 字,大约阅读时间需要 13 分钟。

hot3.png

不废话了看代码吧:

 #include 
#include 
#include 
#include 
class MainWindow : public QMainWindow{    Q_OBJECT
public:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow()=default;
private:    void open()noexcept;    void save()noexcept;
    std::shared_ptr
 openAction;    std::shared_ptr
 saveAction;    std::shared_ptr
 openMenu;    std::shared_ptr
 theToolBar;    std::shared_ptr
 dockWidget;    std::shared_ptr
 textEdit;
protected:    virtual void closeEvent(QCloseEvent* ev)override;};
 #include "mainwindow.h"#include 
#include 
#include 
#include 
#include 
#include 
#include 
MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent){    this->setWindowTitle(tr("shihuawoaini [*]")); //注意这里的[*]这是个占位符(placeholder).
    this->setMinimumSize(500, 400);
    qDebug()<
    this->openAction = std::shared_ptr
(new QAction(tr("&open"), this));    (this->openAction)->setShortcut(QKeySequence::Open); //设置快捷建.    (this->openAction)->setStatusTip(tr("open..."));    connect((this->openAction).get(), &QAction::triggered, this, &MainWindow::open);
    this->saveAction = std::shared_ptr
(new QAction(tr("&save"), this));    saveAction->setShortcut(QKeySequence::Save); //设置快捷键.    saveAction->setStatusTip(tr("save..."));    connect(saveAction.get(), &QAction::triggered, this, &MainWindow::save);
    this->openMenu = std::shared_ptr
(menuBar()->addMenu(tr("open")));    (this->openMenu)->addAction(this->openAction.get());
    this->theToolBar = std::shared_ptr
(this->addToolBar(tr("File")));    (this->theToolBar)->addAction(this->openAction.get());    theToolBar->addAction(saveAction.get());
    this->dockWidget = std::shared_ptr
(new QDockWidget(tr("DockWidget")));    this->addDockWidget(Qt::LeftDockWidgetArea, (this->dockWidget).get());
    this->statusTip();    this->statusBar();
    this->textEdit = std::shared_ptr
(new QTextEdit(this));    this->setCentralWidget(textEdit.get());    connect(textEdit.get(), &QTextEdit::textChanged, [=](){ this->setWindowModified(true); }); //重点!!!!!!!!!!!!!!!!!!!!! }
void MainWindow::open()noexcept{    QString fileName = QFileDialog::getOpenFileName(this, tr("open a file."), ".", tr("Text files(*.txt)"));
    if(!fileName.isEmpty()){        QFile file(fileName);        if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){            QMessageBox::warning(this, tr("Read File"), tr("Can not open file.\n%1").arg(fileName));            return;
        }else{            QTextStream readFile(&file);            textEdit->setText(readFile.readAll());            file.close();        }
    }else{        QMessageBox::warning(this, tr("Path"), tr("You do not select any file."));    }}
void MainWindow::save()noexcept{    QString fileName = QFileDialog::getSaveFileName(this, tr("save file"),".", tr("Text files(*.txt);;Images (*.png *.jpg)"));
    if(!fileName.isEmpty()){        QFile file(fileName);
        if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){            QMessageBox::warning(this, tr("write file"), tr("open nothing"));            return;        }
        QTextStream writeFile(&file);        writeFile<<(this->textEdit)->toPlainText();        file.close();
    }else{        QMessageBox::warning(this, tr("write fail"), tr("nothing for writing"));    }
}
void MainWindow::closeEvent(QCloseEvent* ev) //重点!!!!!!!!!!!!!!!!! {    if(this->isWindowModified()){        bool boolean = QMessageBox::question(this, tr("Close Window"), tr("Do you want exit?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes;
        qDebug()<
accept();        }else{            ev->ignore();        }
    }else{        ev->accept();    }

转载于:https://my.oschina.net/SHIHUAMarryMe/blog/651809

你可能感兴趣的文章
关于mount
查看>>
关于在windows上的wamp集成环境和xampp上安装mongo扩展
查看>>
Arctic教程(2.1)—— AUTOSAR应用程序设计入门(接口)
查看>>
大趋势和小趋势的辩证关系(一)
查看>>
AC日记——[SDOI2015]星际战争 洛谷 P3324
查看>>
Gcc编译Objective-C命令行 + UltraEdit(用ultraEdit打造自己的Objective-C IDE for Windows补充)...
查看>>
CSS(一)
查看>>
[转]用Excel制作甘特图并管理项目
查看>>
7、Android---网络技术
查看>>
LeetCode: Validata Binary Search Tree
查看>>
在windows系统下安装ubuntu系统
查看>>
python正则表达式的学习记录
查看>>
生成 git 密钥 步骤
查看>>
滚动加载事件和禁止滚动条滚动
查看>>
HDU 2048 神、上帝以及老天爷( 错排 )
查看>>
跟着思维导图学习Javascript
查看>>
CSAPP读书笔记11-01
查看>>
Direct3D 初涉:绘制流水线
查看>>
Halcon算子翻译——convert_vector_to_tuple
查看>>
react-native-vector-icons的使用方法
查看>>