• <menu id="w2i4a"></menu>
  • logo Qt使用教程2020

    文檔首頁>>Qt使用教程2020>>Qt小部件基礎教程(四):記事本源文件項目代碼

    Qt小部件基礎教程(四):記事本源文件項目代碼


    Qt是目前最先進、最完整的跨平臺C++開發(fā)工具。它不僅完全實現(xiàn)了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發(fā)過程中需要用到的工具。如今,Qt已被運用于超過70個行業(yè)、數千家企業(yè),支持數百萬設備及應用。

    點擊下載Qt最新試用版

    向導為Notepad類生成的源文件如下所示:

    #include "notepad.h" "notepad.h"
    #include "ui_notepad.h" "ui_notepad.h"
    
    NotepadNotepad::Notepad((QWidget *parent) :
        ) :
        QMainWindow(parent)parent),
        ui((new UiUi::Notepad))
    {{
        ui->setupUi((this);
        
        this->setCentralWidget(ui(ui->textEdit););
    
        connect(ui(ui->actionNew, &QAction::triggered, this, &Notepad::newDocument););
        connect(ui(ui->actionOpen, &QAction::triggered, this, &Notepad::open););
        connect(ui(ui->actionSave, &QAction::triggered, this, &Notepad::save););
        connect(ui(ui->actionSave_as, &QAction::triggered, this, &Notepad::saveAs););
        connect(ui(ui->actionPrint, &QAction::triggered, this, &Notepad::print););
        connect(ui(ui->actionExit, &QAction::triggered, this, &Notepad::exit););
        connect(ui(ui->actionCopy, &QAction::triggered, this, &Notepad::copy););
        connect(ui(ui->actionCut, &QAction::triggered, this, &Notepad::cut););
        connect(ui(ui->actionPaste, &QAction::triggered, this, &Notepad::paste););
        connect(ui(ui->actionUndo, &QAction::triggered, this, &Notepad::undo););
        connect(ui(ui->actionRedo, &QAction::triggered, this, &Notepad::redo););
        connect(ui(ui->actionFont, &QAction::triggered, this, &Notepad::selectFont););
        connect(ui(ui->actionBold, &QAction::triggered, this, &Notepad::setFontBold););
        connect(ui(ui->actionUnderline, &QAction::triggered, this, &Notepad::setFontUnderline););
        connect(ui(ui->actionItalic, &QAction::triggered, this, &Notepad::setFontItalic););
        connect(ui(ui->actionAbout, &QAction::triggered, this, &Notepad::about););
    
    // Disable menu actions for unavailable features
    #if !defined(QT_PRINTSUPPORT_LIB) || !QT_CONFIG(printer)
        ui->actionPrint->setEnabled((false);
    
    #endif
    
    #if !QT_CONFIG(clipboard)
        ui->actionCut->setEnabled((false);
        ui->actionCopy->setEnabled((false);
        ui->actionPaste->setEnabled((false);
    
    #endif
    }}
    
    NotepadNotepad::~Notepad()()
    {{
        delete ui;;
    }}
    
    void NotepadNotepad::newDocument()()
    {{
        currentFile.clear();();
        ui->textEdit->setText((QString());
    }}
    
    void NotepadNotepad::open()()
    {{
        QString fileName = QFileDialog::getOpenFileName((this, "Open the file");
        
        QFile file(fileName);(fileName);
        currentFile = fileName;
        ;
        if ((!file.open((QIODevice::ReadOnly  | QFile::Text)) {
            )) {
            QMessageBox::warning((this, "Warning", "Cannot open file: " + file.errorString());
            ());
            return;
        }}
        setWindowTitle(fileName);(fileName);
        QTextStream in(in(&file);
        );
        QString text = inin.readAll();();
        ui->textEdit->setText(text);(text);
        file.close();();
    }}
    
    void NotepadNotepad::save()()
    {{
        QString fileName;
        ;
        // If we don't have a filename from before, get one.
        if (currentFile(currentFile.isEmpty()) {()) {
            fileName = QFileDialog::getSaveFileName((this, "Save");
            currentFile = fileName;;
        } } else {{
            fileName = currentFile;;
        }}
        QFile file(fileName);
        (fileName);
        if ((!file.open((QIODevice::WriteOnly  | QFile::Text)) {
            )) {
            QMessageBox::warning((this, "Warning", "Cannot save file: " + file.errorString());
            ());
            return;
        }}
        setWindowTitle(fileName);(fileName);
        QTextStream out(out(&file);
        );
        QString text = ui->textEdit->toPlainText();();
        out out << text;; file.close();(); }} void NotepadNotepad::saveAs()() {{ QString fileName = QFileDialog::getSaveFileName((this, "Save as"); QFile file(fileName);(fileName); if ((!file.open((QFile::WriteOnly | QFile::Text)) { )) { QMessageBox::warning((this, "Warning", "Cannot save file: " + file.errorString()); ()); return; }} currentFile = fileName;; setWindowTitle(fileName);(fileName); QTextStream out(out(&file); ); QString text = ui->textEdit->toPlainText();();
        out out << text;; file.close();(); }} void NotepadNotepad::print()() {{ #if defined(QT_PRINTSUPPORT_LIB) && QT_CONFIG(printer) QPrinter printDev; ; #if QT_CONFIG(printdialog) QPrintDialog dialog((&printDev, this); if (dialog(dialog.exec() () == QDialog::Rejected) ) return; #endif // QT_CONFIG(printdialog) // QT_CONFIG(printdialog) ui->textEdit->print((&printDev);
    );
    #endif // QT_CONFIG(printer) // QT_CONFIG(printer)
    }}
    
    void NotepadNotepad::exit()()
    {{
        QCoreApplication::quit();();
    }}
    
    void NotepadNotepad::copy()()
    {{
    #if QT_CONFIG(clipboard)
        ui->textEdit->copy();
    ();
    #endif
    }}
    
    void NotepadNotepad::cut()()
    {{
    #if QT_CONFIG(clipboard)
        ui->textEdit->cut();
    ();
    #endif
    }}
    
    void NotepadNotepad::paste()()
    {{
    #if QT_CONFIG(clipboard)
        ui->textEdit->paste();
    ();
    #endif
    }}
    
    void NotepadNotepad::undo()()
    {{
         ui->textEdit->undo();();
    }}
    
    void NotepadNotepad::redo()()
    {{
        ui->textEdit->redo();();
    }}
    
    void NotepadNotepad::selectFont()()
    {{
        bool fontSelected;bool fontSelected;
        QFont font = QFontDialog::getFont((&fontSelected, this);
        
        if (fontSelected)(fontSelected)
            ui->textEdit->setFont(font);(font);
    }}

    以下各行包括由向導生成的Notepad類頭文件和由uic工具生成的UI頭文件:

    #include "notepad.h" "notepad.h"
    #include "ui_notepad.h" "ui_notepad.h"

    以下行定義了Notepad構造函數:

    Notepad::Notepad((QWidget *parent) :) :

    以下行調用QMainWindow構造函數,該構造函數是Notepad類的基類:

        QMainWindow(parent)parent),
    下面的行創(chuàng)建UI類實例并將其分配給ui成員:
     ui((new UiUi::Notepad))

    以下行設置了UI:

        ui->setupUi((this);

    在析構函數中,我們刪除ui:

    Notepad::~Notepad()()
    {{
        delete ui;;
    }}

    為了使文本編輯字段占據整個屏幕,我們添加setCentralWidget到主窗口。

    Notepad::Notepad((QWidget *parent) :
        ) :
        QMainWindow(parent)parent),
        ui((new UiUi::Notepad))
    {{
        ui->setupUi((this);
        
        this->setCentralWidget(ui(ui->textEdit););
    
        connect(ui(ui->actionNew, &QAction::triggered, this, &Notepad::newDocument););
        connect(ui(ui->actionOpen, &QAction::triggered, this, &Notepad::open););
        connect(ui(ui->actionSave, &QAction::triggered, this, &Notepad::save););
        connect(ui(ui->actionSave_as, &QAction::triggered, this, &Notepad::saveAs););
        connect(ui(ui->actionPrint, &QAction::triggered, this, &Notepad::print););
        connect(ui(ui->actionExit, &QAction::triggered, this, &Notepad::exit););
        connect(ui(ui->actionCopy, &QAction::triggered, this, &Notepad::copy););
        connect(ui(ui->actionCut, &QAction::triggered, this, &Notepad::cut););
        connect(ui(ui->actionPaste, &QAction::triggered, this, &Notepad::paste););
        connect(ui(ui->actionUndo, &QAction::triggered, this, &Notepad::undo););
        connect(ui(ui->actionRedo, &QAction::triggered, this, &Notepad::redo););
        connect(ui(ui->actionFont, &QAction::triggered, this, &Notepad::selectFont););
        connect(ui(ui->actionBold, &QAction::triggered, this, &Notepad::setFontBold););
        connect(ui(ui->actionUnderline, &QAction::triggered, this, &Notepad::setFontUnderline););
        connect(ui(ui->actionItalic, &QAction::triggered, this, &Notepad::setFontItalic););
        connect(ui(ui->actionAbout, &QAction::triggered, this, &Notepad::about););
    
    // Disable menu actions for unavailable features
    #if !defined(QT_PRINTSUPPORT_LIB) || !QT_CONFIG(printer)
        ui->actionPrint->setEnabled((false);
    
    #endif
    
    #if !QT_CONFIG(clipboard)
        ui->actionCut->setEnabled((false);
        ui->actionCopy->setEnabled((false);
        ui->actionPaste->setEnabled((false);
    
    #endif
    }}

    如果你對我們的產品感興趣或者有任何疑問,歡迎咨詢慧都在線客服>>

    慧都高端UI界面開發(fā)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();