一步步学Qt,第四天-Qt 建立MainWindow的小小bug处理
来源:互联网 发布:Java接口技术 编辑:程序博客网 时间:2024/05/02 02:58
一步步学Qt,第四天-Qt 建立MainWindow的小小bug处理
刚写好的小小的记事本,差不多可以使用了,不过在测试中发现了很多的bug,这才一个个的修改了,修改后的实现文件code是:
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QMessageBox>#include <QFileDialog>#include <QTextStream>#include <QTextEdit>#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); setCentralWidget(ui->textEdit); //action setting ui->mainToolBar->addAction(ui->action_New); ui->mainToolBar->addAction(ui->action_Open); ui->mainToolBar->addAction(ui->action_Cut); ui->mainToolBar->addAction(ui->action_About); //slot setting connect(ui->action_About,SIGNAL(triggered()),this,SLOT(about())); connect(ui->action_New,SIGNAL(triggered()),this,SLOT(newFile())); connect(ui->action_Open,SIGNAL(triggered()),this,SLOT(openFile()));}MainWindow::~MainWindow(){ delete ui;}void MainWindow::about(){ QMessageBox::about(this,tr("About this app"),tr("copyrigth by PowerLinux")); return;}void MainWindow::newFile(){ int i = fileChanged(); if(i == 1){ int s = QMessageBox::question(this,tr("Asking"),tr("File is changed ,Save it?"),QMessageBox::Ok | QMessageBox::Cancel); if(s == QMessageBox::Ok){ saveFile(); ui->textEdit->setText(""); } else{ ui->textEdit->setText(""); } } else{ MainWindow *newWin = new MainWindow; newWin->show(); }}void MainWindow::openFile(){ int i = fileChanged(); if(i == 1){ fileName = QFileDialog::getOpenFileName(this); QString openfilename = fileName; if(!fileName.isEmpty()) { int s = QMessageBox::question(this,tr("Asking"),tr("the old File is changed ,are you sure?"),QMessageBox::Ok | QMessageBox::Cancel); if(s == QMessageBox::Ok){ saveFile(); ui->textEdit->setText(""); loadFile(openfilename); } if(s == QMessageBox::Cancel){ ui->textEdit->setText(""); loadFile(openfilename); } } } else{ fileName = QFileDialog::getOpenFileName(this); if (!fileName.isEmpty()) { loadFile(fileName); } }}void MainWindow::loadFile(QString filename){ QFile file(filename); if(file.open(QIODevice::ReadOnly | QIODevice::Text)){ QTextStream textStream(&file); while(!textStream.atEnd()){ ui->textEdit->append(textStream.readLine()); } }}int MainWindow::fileChanged(){ if(ui->textEdit->document()->isModified()){ return 1; } else{ return 0; }}void MainWindow::saveFile()//! [44] //! [45]{ fileName = QFileDialog::getSaveFileName(this); if (!fileName.isEmpty()){ QFile file(fileName); if (!file.open(QFile::WriteOnly | QFile::Text)) { QMessageBox::warning(this, tr("Application"), tr("Cannot write file %1:\n%2.") .arg(fileName) .arg(file.errorString())); } else{ QTextStream out(&file); out << ui->textEdit->toPlainText(); } }}
注意code中
QString openfilename = fileName;openfilename是一个临时使用的数据,为了是在getOpenFileName的时候不会与在使用saveFile时与对应的fileName不会重复,这样在loadfile就不会出错了.
- 一步步学Qt,第四天-Qt 建立MainWindow的小小bug处理
- 一步步学Qt,第四天-Qt 建立MainWindow的步骤
- 一步步学Qt,第四天-Qt 建立MainWindow遇到的问题,也是常见GUI工具的问题
- 一步步学Qt,第五天-小小的ClippingDemo
- 一步步学Qt,第四天-Qt程序发布问题
- 一步步学Qt,第四天-Qt使用sleep
- 一步步学Qt,第五天-Qt这样的小小差异你发现了多少
- 一步步学Qt,第四天-Linux 下mysql数据库链接
- 一步步学Qt,第二天
- 一步步学Qt,第六天-QPainter应用
- 一步步学Qt,第一天
- qt的APPLication Mainwindow layout 的基本知识
- 【学QT】2 - QT/E环境的建立
- 一步步学Qt,第二天-续集:mysql driver
- 一步步学Qt.第二天-续集-mysql连接成功
- 一步步学Qt,第十天-Q”STL”与STL-迭代器
- 一步步学Qt,第十天-MYSQL数据库操作
- QT中MainWindow的布局设置
- 很简单的内核模块A+B
- 5个jQuery常用代码片段
- 数据结构小知识点汇总。(待累积)
- 有得有失,殊途同归(1)
- 帮学院里一个10级童鞋宣传的一个社会调查——“我与计算机专业” 走过路过的帮忙下吧。。。~先谢谢啦~
- 一步步学Qt,第四天-Qt 建立MainWindow的小小bug处理
- Linux服务器性能评估与优化
- 让MFC的 WebBrowser 控件 使用IE8或以上的内核(默认是IE7) 并且使用IE按钮样式
- 关于DateTime?(可为空),Decimal?类型的格式化方法
- 数据结构复习之[循环队列]
- TMD 中国网速为何这么慢!!!
- 关于arm ads 上RO_BASE对程序速度的影响
- 编程修养
- 如何解决分布式系统中的跨时区问题