qt文字編輯器

來源:互聯網
上載者:User

標籤:style   blog   color   使用   io   檔案   ar   cti   

範例程式碼:

mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"#include <QtGui>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    isSaved =false;    curFile = tr("未命名.txt");    setWindowTitle(curFile);    init_statusBar();}MainWindow::~MainWindow(){    delete ui;}void MainWindow::do_file_New(){    do_file_SaveOrNot();    isSaved = false;    curFile = tr("未命名.txt");    setWindowTitle(curFile);    ui->textEdit->clear();//清空文字編輯器    ui->textEdit->setVisible(true);//文字編輯器可見}void MainWindow::do_file_SaveOrNot(){    if(ui->textEdit->document()->isModified()) //如果檔案被更改過,彈出儲存對話方塊    {        QMessageBox box;        box.setWindowTitle(tr("警告"));        box.setIcon(QMessageBox::Warning);        box.setText(curFile+tr("尚未儲存,是否儲存?"));        box.setStandardButtons(QMessageBox::Yes|QMessageBox::No);        if(box.exec() == QMessageBox::Yes)            do_file_Save();    }}void MainWindow::do_file_Save(){    if(isSaved)    {        saveFile(curFile);    }    else    {        do_file_SaveAs();    }}void MainWindow::do_file_SaveAs(){  //  QString fileName = QFileDialog::getSaveFileName(this,tr("另存新檔"),curFile);      QString fileName = QFileDialog::getSaveFileName(this,tr("另存新檔"),curFile);    if(!fileName.isEmpty())    {        saveFile(fileName);    }}bool MainWindow::saveFile(const QString &fileName){    QFile file(fileName);    if(!file.open(QFile::WriteOnly|QFile::Text))    {        QMessageBox::warning(this,tr("儲存檔案"),        tr("無法儲存檔案 %1:\n %2").arg(fileName)        .arg(file.errorString()));        return false;    }    QTextStream out(&file);    out<<ui->textEdit->toPlainText();    isSaved = true;    curFile = QFileInfo(fileName).canonicalFilePath();    setWindowTitle(curFile);    return true;}void MainWindow::do_file_Open(){    do_file_SaveOrNot();    QString fileName = QFileDialog::getOpenFileName(this);    if(!fileName.isEmpty())    {        do_file_Load(fileName);    }    ui->textEdit->setVisible(true);//文字編輯器可見}bool MainWindow::do_file_Load(const QString &fileName){    QFile file(fileName);    if(!file.open(QFile::ReadOnly|QFile::Text))    {        QMessageBox::warning(this,tr("讀取檔案"),tr("無法讀取檔案 %1:\n%2").arg(fileName).arg(file.errorString()));        return false;    }    QTextStream in(&file);    ui->textEdit->setText(in.readAll());    curFile = QFileInfo(fileName).canonicalFilePath();    setWindowTitle(curFile);    return true;}void MainWindow::on_action_N_triggered(){    do_file_New();}void MainWindow::on_action_S_triggered(){    do_file_Save();}void MainWindow::on_action_2_triggered(){    do_file_SaveAs();}void MainWindow::on_action_O_triggered(){    do_file_Open();}void MainWindow::on_action_C_triggered(){    do_file_SaveOrNot();    ui->textEdit->setVisible(false);}void MainWindow::on_action_X_triggered(){    on_action_C_triggered();    qApp->quit();}void MainWindow::on_action_Z_triggered(){    ui->textEdit->undo();}void MainWindow::on_action_X_2_triggered(){    ui->textEdit->cut();}void MainWindow::on_action_C_2_triggered(){    ui->textEdit->copy();}void MainWindow::on_action_V_triggered(){    ui->textEdit->paste();}void MainWindow::on_action_F_triggered(){    QDialog *findDlg = new QDialog(this);    findDlg ->setWindowTitle(tr("尋找"));    find_textLineEdit = new QLineEdit(findDlg);    QPushButton *find_Btn = new QPushButton(tr("尋找下一個"),findDlg);    QVBoxLayout *layout = new  QVBoxLayout(findDlg);    layout ->addWidget(find_textLineEdit);    layout->addWidget(find_Btn);    findDlg ->show();    //顯示對話方塊    connect(find_Btn,SIGNAL(clicked()),this,SLOT(show_findText()));}void MainWindow::show_findText(){    QString findText = find_textLineEdit->text();    ui->textEdit->find(findText,QTextDocument::FindBackward);    if(!ui->textEdit->find(findText,QTextDocument::FindBackward))    {        QMessageBox::warning(this,tr("尋找"),tr("找不到 %1").arg(findText));    }}void MainWindow::init_statusBar(){    QStatusBar*bar = ui->statusBar;    first_statusLabel = new QLabel;    first_statusLabel -> setMinimumSize(150,20);    first_statusLabel -> setFrameShape(QFrame::WinPanel);    first_statusLabel -> setFrameShadow(QFrame::Sunken);    second_statusLabel = new QLabel;    second_statusLabel->setMinimumSize(150,20);    second_statusLabel ->setFrameShape(QFrame::WinPanel);    second_statusLabel->setFrameShadow(QFrame::Sunken);    bar ->addWidget(first_statusLabel);    bar->addWidget(second_statusLabel);    first_statusLabel->setText(tr("歡迎使用文字編輯器"));    second_statusLabel->setText("yafeilinux 製作!");}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.