• qt5.5实现 记事本程序


    最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉,

    所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧。这两天逛了一下Qt的开发者官方网站,和一些国内的论坛,

    看了下基本的知识点,比如信号和槽的机制,界面的布局,就想写个东西,巩固一下。于是参考了官方的文档和代码,纯代码实现了一个简易的记事本程序。

    希望大家参考学习,共同进步。不足之处,还请指出。

    记事本简介:记事本采用代码实现GUI界面,支持,新建,保存,另存为,查找,替换,打印功能。

    开发环境:win7旗舰版 32位 Qt Creator   Qt 5.5

    参考资料:http://www.devbean.net/2012/08/qt-study-road-2-intro

    http://doc.qt.io/qt-5/gettingstartedqt.html

    界面外观:

    查找功能:

    替换功能:


    打印功能:

    保存等:

    关于本屌狮

    本程序涉及一个主对话框,一个查找对话框,一个替换对话框,一个打印对话框,一个关于信息对话框,一个打开对话框,一个保存对话框,其他信息提示对话框。

    功能设计:主要涉及对话框的布局,主对话框与查找,替换对话框的交互。当然这是通过信号与槽的机制来实现的。下面看下具体的代码实现。

    主对话框类

     1 #ifndef MAINWINDOW_H
     2 #define MAINWINDOW_H
     3 
     4 #include <QMainWindow>
     5 #include <QMenu>
     6 #include <QMenuBar>
     7 #include <QAction>
     8 #include <QTextEdit>
     9 #include <QIcon>
    10 #include <QFile>
    11 #include <QFileDialog>
    12 #include <QTextStream>
    13 #include <QMessageBox>
    14 #include <QTextDocument>
    15 #include <QTextCursor>
    16 #include <QToolBar>
    17 #include <QtPrintSupport/QPrinter>
    18 #include <QtPrintSupport/QPrintDialog>
    19 #include <QtPrintSupport/QPrintPreviewDialog>
    20 #include <QtPrintSupport/QPageSetupDialog>
    21 
    22 #include <finddialog.h>
    23 
    24 #include <replacedialog.h>
    25 
    26 class MainWindow : public QMainWindow
    27 {
    28     Q_OBJECT
    29 public:
    30     MainWindow(QWidget *parent = 0);
    31     ~MainWindow();
    32 protected:
    33 private slots:
    34     void createMenus();
    35     void createActions();
    36     void newAct();
    37     void openAct();
    38     void saveAct();
    39     void printAct();
    40     void exitAct();
    41     void findAct(QString,bool,bool);
    42     void aboutAct();
    43     void anotherSaveAct();
    44     void showFindDialog();
    45     void showReplaceDialog();
    46     void findReplace(QString,bool);
    47     void replaceCur(QString,QString);
    48     void replaceAll(QString,QString,bool);
    49 
    50 private:
    51     //菜单
    52     bool   find;
    53     QMenu *file_menu;
    54     QMenu *edit_menu;
    55     QMenu *about_menu;
    56     //Action响应file_menu
    57     QAction *new_act;
    58     QAction *open_act;
    59     QAction *save_act;
    60     QAction *another_save_act;
    61     QAction *print_act;
    62     QAction *exit_act;
    63     //Action响应edit_menu
    64     QAction *find_act;
    65     QAction *replace_act;
    66     //Action响应help_menu
    67     QAction *about_act;
    68     //Edit
    69     QTextEdit *mini_text;
    70 
    71     FindDialog *find_dialog;
    72     ReplaceDialog *replace_dialog;
    73     QString cur_file_name;
    74 
    75 };
    76 
    77 #endif // MAINWINDOW_H
      1 #include "mainwindow.h"
      2 MainWindow::MainWindow(QWidget *parent)
      3     : QMainWindow(parent)
      4 {
      5     setWindowTitle(tr("MiniText"));
      6     mini_text = new QTextEdit;
      7     this->setCentralWidget(mini_text);
      8     resize(900,500);
      9     cur_file_name = tr("");
     10 
     11     createActions();
     12     createMenus();
     13 }
     14 
     15 MainWindow::~MainWindow()
     16 {
     17    if(file_menu){
     18        delete file_menu;
     19    }
     20    if(edit_menu){
     21        delete edit_menu;
     22    }
     23    if(about_menu){
     24        delete about_menu;
     25    }
     26    if(new_act){
     27        delete new_act;
     28    }
     29    if(open_act){
     30        delete open_act;
     31    }
     32    if(save_act){
     33        delete save_act;
     34    }
     35    if(print_act){
     36        delete print_act;
     37    }
     38    if(exit_act){
     39        delete exit_act;
     40 
     41    }
     42    if(find_act){
     43        delete find_act;
     44 
     45    }
     46    if(replace_act){
     47        delete replace_act;
     48    }
     49    if(about_act){
     50        delete about_act;
     51    }
     52    if(mini_text){
     53        delete mini_text;
     54    }
     55    if(find_dialog){
     56        delete find_dialog;
     57    }
     58    if(replace_dialog){
     59        delete replace_dialog;
     60    }
     61    if(another_save_act){
     62        delete another_save_act;
     63    }
     64 }
     65 
     66 void MainWindow::createMenus()
     67 {
     68 
     69     file_menu = menuBar()->addMenu(tr("&文件"));
     70     file_menu->setStyleSheet("color:blue");
     71     file_menu->addAction(new_act);
     72     file_menu->addAction(open_act);
     73     file_menu->addAction(save_act);
     74     file_menu->addAction(another_save_act);
     75     file_menu->addAction(print_act);
     76     file_menu->addSeparator();
     77     file_menu->addAction(exit_act);
     78     edit_menu = menuBar()->addMenu(tr("&编辑"));
     79     edit_menu->setStyleSheet("color:blue");
     80     edit_menu->addAction(find_act);
     81     edit_menu->addAction(replace_act);
     82     about_menu = menuBar()->addMenu(tr("&关于"));
     83     about_menu->setStyleSheet("color:blue");
     84     about_menu->addAction(about_act);
     85     QToolBar *tool_bar = addToolBar(tr("file"));
     86     tool_bar->addAction(new_act);
     87     tool_bar->addAction(open_act);
     88     tool_bar->addAction(save_act);
     89     tool_bar->addAction(another_save_act);
     90     tool_bar->addAction(print_act);
     91     tool_bar->addAction(find_act);
     92     tool_bar->addAction(replace_act);
     93     tool_bar->addAction(about_act);
     94     tool_bar->addAction(exit_act);
     95 
     96 }
     97 
     98 void MainWindow::createActions()
     99 {
    100     find = false;
    101     find_dialog = new FindDialog(this);
    102     replace_dialog = new ReplaceDialog(this);
    103     //Action响应file_menu
    104     new_act = new QAction(QIcon(tr(":/images/new")),tr("&新建"),this);
    105     new_act->setShortcut(QKeySequence::New);
    106 
    107     open_act = new QAction(QIcon(tr(":/images/open")),tr("&打开"),this);
    108     open_act->setShortcut(QKeySequence::Open);
    109 
    110     save_act = new QAction(QIcon(tr(":/images/save")),tr("&保存"),this);
    111     save_act->setShortcut(QKeySequence::Save);
    112 
    113     another_save_act = new QAction(QIcon(tr(":/images/another_save")),tr("另存为"),this);
    114 
    115     print_act = new QAction(QIcon(tr(":/images/print")),tr("&打印"),this);
    116     print_act->setShortcut(QKeySequence::Print);
    117 
    118     exit_act = new QAction(QIcon(tr(":/images/exit")),tr("&退出"),this);
    119     exit_act->setShortcut(QKeySequence::Quit);
    120 
    121     find_act = new QAction(QIcon(tr(":/images/find")),tr("&查找"),this);
    122     find_act->setShortcut(QKeySequence::Find);
    123 
    124     replace_act = new QAction(QIcon(tr(":/images/replace")),tr("&替换"),this);
    125     replace_act->setShortcut(QKeySequence::Replace);
    126 
    127     about_act = new QAction(QIcon(tr(":/images/about")),tr("关于"),this);
    128 
    129     connect(new_act,SIGNAL(triggered()),this,SLOT(newAct()));
    130     connect(open_act,SIGNAL(triggered()),this,SLOT(openAct()));
    131     connect(save_act,SIGNAL(triggered()),this,SLOT(saveAct()));
    132     connect(print_act,SIGNAL(triggered()),this,SLOT(printAct()));
    133     connect(another_save_act,SIGNAL(triggered()),this,SLOT(anotherSaveAct()));
    134     connect(exit_act,SIGNAL(triggered()),this,SLOT(exitAct()));
    135     connect(find_act,SIGNAL(triggered()),this,SLOT(showFindDialog()));
    136     connect(replace_act,SIGNAL(triggered()),this,SLOT(showReplaceDialog()));
    137     connect(about_act,SIGNAL(triggered()),this,SLOT(aboutAct()));
    138 
    139     connect(find_dialog,SIGNAL(findTextDataButtonClickedSignal(QString,bool,bool)),
    140             this,SLOT(findAct(QString,bool,bool)));
    141     connect(replace_dialog,SIGNAL(findReplaceStr(QString,bool)),
    142             this,SLOT(findReplace(QString,bool)));
    143     connect(replace_dialog,SIGNAL(replaceCurOneStr(QString,QString)),
    144             this,SLOT(replaceCur(QString,QString)));
    145     connect(replace_dialog,SIGNAL(replaceAllStr(QString,QString,bool)),
    146             this,SLOT(replaceAll(QString,QString,bool)));
    147 }
    148 
    149 void MainWindow::newAct()
    150 {
    151     if (mini_text->document()->isModified())
    152     {
    153         QMessageBox::StandardButton button = QMessageBox::information(this,
    154                                           "尚未保存", "是否要保存?",QMessageBox::Save |
    155                                            QMessageBox::Discard | QMessageBox::Cancel);
    156         switch(button)
    157         {
    158             case QMessageBox::Save:{
    159                 saveAct();
    160                 if (mini_text->document()->isModified()){
    161                     return;
    162                 }
    163             }
    164             case QMessageBox::Cancel:{
    165                 return;
    166             }
    167             case QMessageBox::Discard:{
    168                 break;
    169             }
    170         }
    171     }
    172     mini_text->clear();
    173 }
    174 
    175 //打开文件
    176 void MainWindow::openAct()
    177 {
    178     QString file_name = QFileDialog::getOpenFileName(this,tr("打开文件"),QString(),
    179                           tr("文本文件(*.txt) ;; C++文件(*.h *.cpp *.hpp)"));
    180     cur_file_name = file_name;
    181     if(!file_name.isEmpty()){
    182        QFile file(file_name);
    183        if(!file.open(QIODevice::ReadOnly)){
    184           QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
    185           return;
    186        }
    187        QTextStream ins(&file);
    188        mini_text->setText(ins.readAll());
    189        file.close();
    190     }
    191 }
    192 
    193 //保存文件
    194 void MainWindow::saveAct()
    195 {
    196     if(cur_file_name.isEmpty()){
    197         QString file_name = QFileDialog::getSaveFileName(this,tr("保存文件"),QString(),
    198                                tr("文本文件(*.txt) ;; C++文件(*.h *.cpp *.hpp)"));
    199         if(!file_name.isEmpty()){
    200             QFile file(file_name);
    201             if(!file.open(QIODevice::WriteOnly)){
    202                 QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
    203                 return;
    204             }
    205             QTextStream outs(&file);
    206             outs<<mini_text->toPlainText();
    207             outs.flush();
    208             file.close();
    209         }
    210     }
    211     else{
    212         QFile file(cur_file_name);
    213         if(!file.open(QIODevice::WriteOnly)){
    214             QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
    215             return;
    216         }
    217         QTextStream outs(&file);
    218         outs<<mini_text->toPlainText();
    219         outs.flush();
    220         file.close();
    221     }
    222 }
    223 
    224 void MainWindow::anotherSaveAct()
    225 {
    226     QString file_name = QFileDialog::getSaveFileName(this,tr("保存文件"),QString(),
    227                            tr("文本文件(*.txt) ;; C++文件(*.h *.cpp *.hpp)"));
    228     if(!file_name.isEmpty()){
    229         QFile file(file_name);
    230         if(!file.open(QIODevice::WriteOnly)){
    231             QMessageBox::critical(this,tr("错误"),tr("不能打开文件"));
    232             return;
    233         }
    234         QTextStream outs(&file);
    235         outs<<mini_text->toPlainText();
    236         outs.flush();
    237         file.close();
    238     }
    239 
    240 }
    241 
    242 void MainWindow::findReplace(QString find_str, bool flg)
    243 {
    244     bool find_flag;
    245     if(flg){
    246         find_flag = mini_text->find(find_str,QTextDocument::FindCaseSensitively);
    247     }
    248     else{
    249         find_flag = mini_text->find(find_str);
    250     }
    251     if(!find_flag){
    252         QMessageBox::information(this,tr("结果"),tr("没有找到查找内容"),QMessageBox::Yes);
    253     }
    254     else{
    255         find = true;
    256     }
    257 
    258 
    259 }
    260 
    261 void MainWindow::replaceCur(QString find_str, QString replace_str)
    262 {
    263     if(find){
    264         QTextCursor text_cursor = mini_text->textCursor();
    265         text_cursor.insertText(replace_str);
    266     }
    267     else{
    268         QMessageBox::information(this,tr("结果"),tr("没有内容不能替换")+find_str,QMessageBox::Yes);
    269     }
    270     find = false;
    271 }
    272 
    273 void MainWindow::replaceAll(QString find_str, QString replace_str,bool flg)
    274 {
    275     if(!flg){
    276         bool haf = mini_text->find(find_str);
    277         if(haf){
    278             QTextCursor text_cursor = mini_text->textCursor();
    279             text_cursor.insertText(replace_str);
    280             while(mini_text->find(find_str)){
    281                 text_cursor = mini_text->textCursor();
    282                 text_cursor.insertText(replace_str);
    283             }
    284             while(mini_text->find(find_str,QTextDocument::FindBackward)){
    285                 text_cursor = mini_text->textCursor();
    286                 text_cursor.insertText(replace_str);
    287             }
    288         }
    289         else{
    290              QMessageBox::information(this,tr("结果"),tr("没有内容不能替换 ")+find_str,QMessageBox::Yes);
    291         }
    292     }
    293     else{
    294         bool haf = mini_text->find(find_str,QTextDocument::FindCaseSensitively);
    295         if(haf){
    296             QTextCursor text_cursor = mini_text->textCursor();
    297             text_cursor.insertText(replace_str);
    298             while(mini_text->find(find_str,QTextDocument::FindCaseSensitively)){
    299                 text_cursor = mini_text->textCursor();
    300                 text_cursor.insertText(replace_str);
    301             }
    302             while(mini_text->find(find_str,QTextDocument::FindCaseSensitively|QTextDocument::FindBackward)){
    303                 text_cursor = mini_text->textCursor();
    304                 text_cursor.insertText(replace_str);
    305             }
    306         }
    307         else{
    308             QMessageBox::information(this,tr("结果"),tr("没有内容不能替换")+find_str,QMessageBox::Yes);
    309         }
    310     }
    311 
    312 }
    313 
    314 void MainWindow::printAct()
    315 {
    316     QPrinter printer;
    317     QString printer_name = printer.printerName();
    318        if( printer_name.size() == 0){
    319            return;
    320        }
    321        QPrintDialog dlg(&printer, this);
    322        if (mini_text->textCursor().hasSelection()){
    323            dlg.addEnabledOption(QAbstractPrintDialog::PrintSelection);
    324        }
    325        if(dlg.exec() == QDialog::Accepted){
    326            mini_text->print(&printer);
    327        }
    328 }
    329 
    330 void MainWindow::findAct(QString str,bool ignore,bool choose)
    331 {
    332     QString text = str;
    333     bool find_flag;
    334     if(!text.isEmpty()){
    335         if(choose){
    336             if(ignore){
    337               find_flag = mini_text->find(text,QTextDocument::FindCaseSensitively);
    338             }
    339             else{
    340                 find_flag = mini_text->find(text);
    341 
    342             }
    343         }
    344         else{
    345             if(ignore){
    346                 find_flag = mini_text->find(text,QTextDocument::FindBackward|QTextDocument::FindCaseSensitively);
    347             }
    348             else{
    349                 find_flag = mini_text->find(text,QTextDocument::FindBackward);
    350 
    351             }
    352         }
    353         if(!find_flag){
    354             QMessageBox::information(this,tr("结果"),tr("没有找到查找内容"),QMessageBox::Yes);
    355         }
    356     }
    357 
    358 }
    359 
    360 void MainWindow::aboutAct()
    361 {
    362     QMessageBox message(QMessageBox::NoIcon,tr("关于"), tr("version: v1.0
    "
    363                                                           "author: karllen
    "
    364                                                           "qq: 1160113606
    "
    365                                                          "Begin Learning The Qt"));
    366     message.setIconPixmap(QPixmap(tr(":/images/me")));
    367     message.exec();
    368 
    369 }
    370 
    371 void MainWindow::showFindDialog()
    372 {
    373     find_dialog->show();
    374 }
    375 
    376 void MainWindow::showReplaceDialog()
    377 {
    378     replace_dialog->show();
    379 }
    380 
    381 void MainWindow::exitAct()
    382 {
    383     this->close();
    384 
    385 }

    查找对话框类:

     1 #ifndef FINDDIALOG_H
     2 #define FINDDIALOG_H
     3 #include <QDialog>
     4 #include <QLineEdit>
     5 #include <QLabel>
     6 #include <QPushButton>
     7 #include <QRadioButton>
     8 #include <QGridLayout>
     9 #include <QHBoxLayout>
    10 #include <QGroupBox>
    11 #include <QCheckBox>
    12 
    13 class FindDialog:public QDialog
    14 {
    15     Q_OBJECT
    16 public:
    17     FindDialog(QWidget *parent = 0);
    18     ~FindDialog();
    19 
    20 signals:
    21     void findTextDataButtonClickedSignal(QString,bool,bool);
    22 
    23 private slots:
    24     void findButtonState();
    25     void findDataButtonClickedState();
    26 
    27 private:
    28     QLineEdit *find_edit;
    29     QLabel    *find_label,*ignore_label,*next_label,*back_label;
    30     QPushButton *find_button;
    31     QRadioButton *next_radio;
    32     QRadioButton *back_radio;
    33     QCheckBox *ignore_flag;
    34 };
    35 
    36 #endif // FINDDIALOG_H
      1 #include "finddialog.h"
      2 
      3 FindDialog::FindDialog(QWidget *parent)
      4     :QDialog(parent)
      5 {
      6     setWindowTitle(tr("查找"));
      7     find_label = new QLabel(tr("查找"));
      8     ignore_label = new QLabel(tr("区分大小写"));
      9     next_label = new QLabel(tr("向后"));
     10     back_label = new QLabel(tr("向前"));
     11     find_edit = new QLineEdit;
     12     find_button = new QPushButton(tr("查找下一个"));
     13     next_radio = new QRadioButton;
     14     back_radio = new QRadioButton;
     15     ignore_flag = new QCheckBox;
     16 
     17     find_edit->setText(tr(""));
     18 
     19     QGridLayout *grid_layout = new QGridLayout(this);
     20     grid_layout->addWidget(find_label,0,0);
     21     grid_layout->addWidget(find_edit,0,1);
     22     grid_layout->addWidget(find_button,0,3);
     23 
     24     QHBoxLayout *ignore_layout = new QHBoxLayout;
     25     ignore_layout->setSpacing(10);
     26     ignore_layout->addWidget(ignore_label);
     27     ignore_layout->addWidget(ignore_flag);
     28 
     29     QHBoxLayout *radio_layout = new QHBoxLayout;
     30     radio_layout->addWidget(next_label);
     31     radio_layout->addWidget(next_radio);
     32 
     33     radio_layout->addWidget(back_label);
     34     radio_layout->addWidget(back_radio);
     35 
     36     QGroupBox *group_radio = new QGroupBox(tr("方向"),this);
     37     group_radio->setLayout(radio_layout);
     38 
     39     QHBoxLayout *do_radio = new QHBoxLayout;
     40     do_radio->addWidget(group_radio);
     41 
     42     grid_layout->addLayout(ignore_layout,1,0);
     43     grid_layout->addLayout(do_radio,1,1);
     44 
     45     this->setMaximumSize(300,100);
     46     next_radio->setChecked(true);
     47     find_button->setEnabled(false);
     48     connect(find_edit,SIGNAL(textChanged(QString)),this,SLOT(findButtonState()));
     49     connect(find_button,SIGNAL(clicked(bool)),this,SLOT(findDataButtonClickedState()));
     50 }
     51 
     52 FindDialog::~FindDialog()
     53 {
     54     if(find_edit){
     55         delete find_edit;
     56     }
     57     if(find_label){
     58         delete find_label;
     59     }
     60     if(ignore_label){
     61         delete ignore_label;
     62     }
     63     if(next_label){
     64         delete next_label;
     65     }
     66     if(back_label){
     67         delete back_label;
     68     }
     69     if(find_button){
     70         delete find_button;
     71     }
     72     if(next_radio){
     73         delete next_radio;
     74     }
     75     if(back_radio){
     76         delete back_radio;
     77     }
     78     if(ignore_flag){
     79         delete ignore_flag;
     80     }
     81 }
     82 
     83 void FindDialog::findButtonState()
     84 {
     85     if(find_edit->text().isEmpty()){
     86         find_button->setEnabled(false);
     87     }
     88     else{
     89         find_button->setEnabled(true);
     90     }
     91 
     92 }
     93 
     94 void FindDialog::findDataButtonClickedState()
     95 {
     96     if(find_edit->text().isEmpty()){
     97         return;
     98     }
     99     QString str = find_edit->text();
    100     if(next_radio->isChecked()){
    101         if(ignore_flag->isChecked()){
    102             emit findTextDataButtonClickedSignal(str,true,true);
    103         }
    104         else{
    105             emit findTextDataButtonClickedSignal(str,false,true);
    106         }
    107     }
    108     if(back_radio->isChecked()){
    109         if(ignore_flag->isChecked()){
    110             emit findTextDataButtonClickedSignal(str,true,false);
    111         }
    112         else{
    113             emit findTextDataButtonClickedSignal(str,false,false);
    114         }
    115     }
    116 }

    替换对话框类:

     1 #ifndef REPLACEDIALOG_H
     2 #define REPLACEDIALOG_H
     3 
     4 #include <QDialog>
     5 #include <QPushButton>
     6 #include <QLabel>
     7 #include <QCheckBox>
     8 #include <QLineEdit>
     9 #include <QGridLayout>
    10 #include <QVBoxLayout>
    11 
    12 class ReplaceDialog:public QDialog
    13 {
    14     Q_OBJECT
    15 public:
    16     ReplaceDialog(QWidget *parent = 0);
    17     ~ReplaceDialog();
    18 signals:
    19     void replaceAllStr(QString , QString,bool);
    20     void replaceCurOneStr(QString,QString);
    21     void findReplaceStr(QString,bool);
    22 private slots:
    23     void chooseStrSlot();
    24     void findButtonStateSlot();
    25     void replaceOneButtonStateSlot();
    26     void replaceAllButtonStateSlot();
    27 private:
    28     QLineEdit *find_str;
    29     QLineEdit *replace_str;
    30     QPushButton *find_next_button;
    31     QPushButton *replaced_one_button;
    32     QPushButton *replaced_all_button;
    33     QPushButton *cancle_button;
    34     QCheckBox *ignore_flag;
    35     QLabel  *find_label;
    36     QLabel  *replace_label;
    37 };
    38 
    39 #endif // REPLACEDIALOG_H
      1 #include "replacedialog.h"
      2 
      3 ReplaceDialog::ReplaceDialog(QWidget *parent)
      4     :QDialog(parent)
      5 {
      6     find_label          = new QLabel(tr("查找内容"));
      7     replace_label       = new QLabel(tr("替换为"));
      8     find_str            = new QLineEdit();
      9     replace_str         = new QLineEdit();
     10     find_next_button    = new QPushButton(tr("查找下一个"));
     11     replaced_one_button = new QPushButton(tr("替换"));
     12     replaced_all_button = new QPushButton(tr("全部替换"));
     13     cancle_button       = new QPushButton(tr("取消"));
     14     ignore_flag         = new QCheckBox(tr("区分大小写"));
     15 
     16     QGridLayout *grdly  = new QGridLayout(this);
     17     QVBoxLayout *vboxly = new QVBoxLayout(this);
     18 
     19     vboxly->addWidget(replaced_all_button);
     20     vboxly->addWidget(cancle_button);
     21     grdly->addWidget(find_label,0,0);
     22     grdly->addWidget(find_str,0,1);
     23     grdly->addWidget(find_next_button,0,2);
     24     grdly->addWidget(replace_label,1,0);
     25     grdly->addWidget(replace_str,1,1);
     26     grdly->addWidget(replaced_one_button,1,2);
     27     grdly->addWidget(ignore_flag,2,1);
     28     grdly->addLayout(vboxly,2,2);
     29 
     30     find_str->setText(tr(""));
     31     replace_str->setText(tr(""));
     32     find_next_button->setEnabled(false);
     33     replaced_one_button->setEnabled(false);
     34     replaced_all_button->setEnabled(false);
     35 
     36     this->setMaximumSize(300,100);
     37 
     38     connect(find_str,SIGNAL(textChanged(QString)),this,SLOT(chooseStrSlot()));
     39     connect(cancle_button,SIGNAL(clicked()),this,SLOT(close()));
     40     connect(find_next_button,SIGNAL(clicked()),this,SLOT(findButtonStateSlot()));
     41     connect(replaced_one_button,SIGNAL(clicked()),this,SLOT(replaceOneButtonStateSlot()));
     42     connect(replaced_all_button,SIGNAL(clicked()),this,SLOT(replaceAllButtonStateSlot()));
     43 }
     44 
     45 ReplaceDialog::~ReplaceDialog()
     46 {
     47     if(find_str){
     48         delete find_str;
     49     }
     50     if(replace_str){
     51         delete replace_str;
     52     }
     53     if(find_next_button){
     54         delete find_next_button;
     55     }
     56     if(replaced_one_button){
     57         delete replaced_one_button;
     58     }
     59     if(replaced_all_button){
     60         delete replaced_all_button;
     61     }
     62     if(cancle_button){
     63         delete cancle_button;
     64     }
     65     if(ignore_flag){
     66         delete ignore_flag;
     67     }
     68     if(find_label){
     69         delete find_label;
     70     }
     71     if(replace_label){
     72         delete replace_label;
     73     }
     74 }
     75 
     76 void ReplaceDialog::chooseStrSlot()
     77 {
     78     if(!find_str->text().isEmpty()){
     79         find_next_button->setEnabled(true);
     80         replaced_one_button->setEnabled(true);
     81         replaced_all_button->setEnabled(true);
     82     }
     83     else{
     84         find_next_button->setEnabled(false);
     85         replaced_one_button->setEnabled(false);
     86         replaced_all_button->setEnabled(false);
     87     }
     88 }
     89 
     90 void ReplaceDialog::findButtonStateSlot()
     91 {
     92     if(ignore_flag->isChecked()){
     93         emit findReplaceStr(find_str->text(),true);
     94     }
     95     else{
     96         emit findReplaceStr(find_str->text(),false);
     97     }
     98 }
     99 
    100 void ReplaceDialog::replaceOneButtonStateSlot()
    101 {
    102     emit replaceCurOneStr(find_str->text(),replace_str->text());
    103 
    104 }
    105 
    106 void ReplaceDialog::replaceAllButtonStateSlot()
    107 {
    108     if(ignore_flag->isChecked()){
    109         emit replaceAllStr(find_str->text() , replace_str->text(),true);
    110     }
    111     else{
    112         emit replaceAllStr(find_str->text() , replace_str->text(),false);
    113     }
    114 
    115 
    116 }

    main函数:

     1 #include "mainwindow.h"
     2 #include "finddialog.h"
     3 #include <QApplication>
     4 
     5 int main(int argc, char *argv[])
     6 {
     7     QApplication a(argc, argv);
     8 
     9     MainWindow w;
    10     w.show();
    11     return a.exec();
    12 }

    注:代码下载地址 http://download.csdn.net/detail/u010085340/9289609                                       

  • 相关阅读:
    libusb 示例
    里不是吧、
    ibeacon UUID
    Centos7系统下Docker开启认证的远程端口2376配置教程
    Consul 快速入门
    docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
    Docker 启动容器时,报错 WARNING:IPv4 forwarding is disabled. Networking will not work. 的解决办法
    【基线检查】(高)基线检查--禁用local-infile选项(访问控制)
    PyCharm 上安装 Package(以 pandas 为例)
    Python time模块和datetime模块
  • 原文地址:https://www.cnblogs.com/Forever-Kenlen-Ja/p/4985133.html
Copyright © 2020-2023  润新知