Qt——文本编辑器中的数据存取
1.QAction被点击之后会产生一个triggered信号通过信号与槽的机制能够捕捉对QAction对象的操作项目中可以将多个信号映射到同一个槽函数2.完善记事本中打开文件、保存文件、另存为功能在MainWindow.h中加入三个槽函数public slots: void onFileOpen(); //打开文件槽函数 void onFileSave(); //保存文件槽函数 void onFileSaveAs(); //另存为槽函数在MainWindowUI.cpp中添加关联代码connect(action, SIGNAL(triggered()), this, SLOT(onFileSaveAs()));新建MainWindowSlots.cpp实现具体的槽函数#include MainWindow.h #include QFileDialog #include QDebug #include QFile #include QMessageBox #include QTextStream void MainWindow::showErorrMessage(QString message){ QMessageBox msg(this); msg.setWindowTitle(Error); msg.setText(message); msg.setIcon(QMessageBox::Critical); msg.setStandardButtons(QMessageBox::Ok); msg.exec(); } QString MainWindow::showFileDialog(QFileDialog::AcceptMode mode, QString title) { QString ret ; QFileDialog fd(this); //创建一个文件对话框对象 QStringList filters; //创建一个字符串列表 filters用来存储文件过滤器 filters.append(Text Files (*.txt)); filters.append(All Files (*)); fd.setWindowTitle(title); //设置文件对话框的标题 fd.setAcceptMode(QFileDialog::AcceptOpen); //设置对话框模式为打开文件 fd.setNameFilters(filters); if( mode QFileDialog::AcceptOpen ) { fd.setFileMode(QFileDialog::ExistingFile); //设置文件选择模式只能选择已存在的单个文件 } if( fd.exec() QFileDialog::Accepted ) //如果用户点击了对话框的 “打开” 按钮 { ret fd.selectedFiles()[0]; } return ret; } void MainWindow::onFileOpen() { QString path showFileDialog(QFileDialog::AcceptOpen, Open); if( path ! ) { QFile file(path); //绑定用户选中的第一个文件路径 if( file.open(QIODevice::ReadOnly | QIODevice::Text)) { //把读取到的文件内容显示到编辑器中 mainEditor.setPlainText(QString(file.readAll())); file.close(); m_filePath path; setWindowTitle(NotePad - [ m_filePath ]); } else{ showErorrMessage(QString(open file error! \n\n) \ path \)); } } } void MainWindow::onFileSave() { if( m_filePath ) { m_filePath showFileDialog(QFileDialog::AcceptSave, Save); } if( m_filePath ! ) { QFile file(m_filePath); if( file.open(QIODevice::WriteOnly | QIODevice::Text) ) { QTextStream out(file); out mainEditor.toPlainText(); file.close(); setWindowTitle(NotePad - [ m_filePath ]); } else{ showErorrMessage(QString(Save file error! \n\n) \ m_filePath \); m_filePath ; } } } void MainWindow::onFileSaveAs() { QString path showFileDialog(QFileDialog::AcceptSave, Save As); if( path ! ) { QFile file(path); if( file.open(QIODevice::WriteOnly | QIODevice::Text) ) { QTextStream out(file); out mainEditor.toPlainText(); file.close(); m_filePath path; setWindowTitle(NotePad - [ m_filePath ]); } else{ showErorrMessage(QString(Save file error! \n\n) \ path \); } } }