最近由于要做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\n" 363 "author: karllen\n" 364 "qq: 1160113606\n" 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