用C++和Qt写一个有关记事本的程序
实现打开文件,保存文件,复制,粘贴,剪切,撤销,删除,修改记事本字体样式和颜色,背景颜色的功能
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionOpen_File_O_triggered()
{
QString fileName = QFileDialog::getOpenFileName(this,"打开",QDir::currentPath(),"C++ Source File(*.cpp *.c *.cc);;C++ Header File(*.h);;Text File(*.txt)");
if(fileName.isEmpty())
return ;
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly))
qDebug() << "open success!";
else
qDebug() << "open failed!";
QByteArray data = file.readAll();
ui->textEdit->setText(data);
}
void MainWindow::on_actionSave_File_S_triggered()
{
QString fileName = QFileDialog::getSaveFileName(this,"保存",QDir::currentPath(),"C++ Source File(*.cpp *.c *.cc);;C++ Header File(*.h);;Text File(*.txt)");
if(fileName.isEmpty())
return ;
qDebug() << fileName;
QFile file(fileName);
if(!file.open(QIODevice::WriteOnly))
qDebug() << "open success!";
else
qDebug() << "open failed!";
QString data = ui->textEdit->document()->toPlainText();
file.write(data.toLatin1());//qstring--->toLatin1-->qbytearray;;;qbytearray----->qstring
file.close();
}
void MainWindow::on_actionCopy_C_triggered()
{
ui->textEdit->copy();
}
void MainWindow::on_actionPaste_V_triggered()
{
ui->textEdit->paste();
}
void MainWindow::on_actionCut_X_triggered()
{
ui->textEdit->cut();
}
void MainWindow::on_actionUndo_Z_triggered()
{
ui->textEdit->undo();
}
void MainWindow::on_actionRedo_triggered()
{
ui->textEdit->redo();
}
void MainWindow::on_actionDelete_triggered()
{
//获取光标所在的位置
QTextCursor cursor = ui->textEdit->textCursor();
if(cursor.hasSelection())//如果光标有选中
cursor.deleteChar();//删除选中的内容
else
cursor.deletePreviousChar();//否则删除光标的前一个字符
}
void MainWindow::on_actionFont_settings_triggered()
{
bool ok;
QFont font = QFontDialog::getFont(&ok,QFont("Arial"),this,"字体");
ui->textEdit->setFont(font);
}
void MainWindow::on_actionText_color_settings_triggered()
{
QColor color = QColorDialog::getColor(QColor(Qt::black),this,"颜色");
ui->textEdit->setTextColor(color);
}
void MainWindow::on_actionBackground_color_setting_triggered()
{
QColor color = QColorDialog::getColor(QColor(Qt::white),this,"颜色");
if(color.isValid())
{
QPalette palette = ui->textEdit->palette();
palette.setColor(QPalette::Base, color);
ui->textEdit->setPalette(palette);
}
}
void MainWindow::on_actionAbout_triggered()
{
QMessageBox::about(this,"关于","这是一个有关学习生活的记事本");
}
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QFileDialog>
#include <QDebug>
#include <QTextEdit>
#include <QTextCursor>
#include <QFontDialog>
#include <QColorDialog>
#include <QPalette>
#include <QMessageBox>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionOpen_File_O_triggered();
void on_actionSave_File_S_triggered();
void on_actionCopy_C_triggered();
void on_actionPaste_V_triggered();
void on_actionCut_X_triggered();
void on_actionUndo_Z_triggered();
void on_actionRedo_triggered();
void on_actionDelete_triggered();
void on_actionFont_settings_triggered();
void on_actionText_color_settings_triggered();
void on_actionBackground_color_setting_triggered();
void on_actionAbout_triggered();
private:
Ui::MainWindow *ui;
QTextEdit *textEdit;
};
#endif // MAINWINDOW_H