Qt项目--NotePad设计

    技术2026-04-13  10

    目录

    主界面预览菜单栏和状态栏设计设计中心窗口QTabWidgetQTextEditQStatusBar 功能设计新建文件打开文件保存文件打开新窗口打印文件打印预览定义槽函数打印预览 另存为PDF设置字体撤销 返回 复制 粘贴 剪贴 全选转 参考文献

    主界面预览

    微信公众号【编程学习基地】后台发送关键字NotePad获取源码

    菜单栏和状态栏设计

    仿照记事本的菜单栏进行设计,利用利用Designer设计UI界面万能的UI设计方案

    设计中心窗口

    QTabWidget

    QTabWidget *Tab;

    实例化对象

    this->Tab = new QTabWidget(this); this->setCentralWidget(Tab); this->Tab->setMovable(true); //设置页面是否可被拖拽移动. this->Tab->setTabsClosable(true); //设置页面是否可以关闭

    QTextEdit

    QList<QTextEdit*> EditList; /* 定义QList容器 */

    实例化对象

    QTextEdit *newEdit = new QTextEdit(); EditList.append(newEdit); //将newEdit添加进List里面,方便管理 this->Tab->addTab(newEdit, filename); //新建空白文件

    QStatusBar

    QStatusBar *stbar; QLabel *lb_fileinfo; //文件信息 QLabel *lb_time; //时间 QLabel *lab_tmp; //填充 QLabel *lab_tmp1; //填充

    实例化对象

    //状态栏状态信息初始化 this->stbar = this->statusBar(); this->lb_fileinfo = new QLabel(); this->lb_time = new QLabel(); this->lab_tmp = new QLabel(" "); this->lab_tmp1 = new QLabel(" "); //添加状态栏信息 stbar->addWidget(lb_fileinfo); stbar->addWidget(lab_tmp); stbar->addWidget(lab_tmp1); stbar->addWidget(lb_time);

    功能设计

    新建文件

    QTextEdit *newEdit = new QTextEdit(); this->Tab->addTab(newEdit, filename); //新建空白文件 this->Tab->setCurrentIndex(ID); //设置当前Tab下标 this->ID++; //id加一 this->lb_fileinfo->setText(filename); //设置状态栏信息

    打开文件

    QString openName; openName = QFileDialog::getOpenFileName(this, "打开文件", ""); if(openName.isEmpty()){ qDebug()<<"文件打开失败"; return; } qDebug()<<"打开文件成功"; QFile file(openName); if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){ qDebug()<<file.errorString(); return; } //读取 解决打开文件中文乱码 没有完全解决utf-8没问题 while (!file.atEnd()) { QByteArray line = file.readLine(); QString str = QString(line); //QString(line) QByteArray转化为QString this->EditList.at(ID - 1)->append(str); } file.close();

    保存文件

    QString saveFileName = QFileDialog::getSaveFileName(this, "保存",QString("%1.txt").arg(ID)); if(saveFileName.isEmpty()){ qDebug()<<"文件保存失败"; return; } //进行写操作 QString txt = this->EditList.at(this->Tab->currentIndex())->toPlainText(); QFile file(saveFileName); file.open(QIODevice::WriteOnly|QIODevice::Text); file.write(txt.toUtf8()); file.close();

    打开新窗口

    MainWindow* newWindow = new MainWindow; //实例化自己 newWindow->show();

    打印文件

    //创建打印机对象 QPrinter printer (QPrinter::HighResolution); //打印机构造一个新的模态打印机对话框。 QPrintDialog *dlg=new QPrintDialog(&printer,this); //如果选中文档 activeWindow为QTextEdit 声明的对象 if(this->EditList.at(this->Tab->currentIndex())->textCursor().hasSelection()) { dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection); } dlg->setWindowTitle(tr("打印文档")); if(dlg->exec()==QDialog::Accepted) { //便于将文本编辑文档打印到给定打印机的功能。这相当于直接在文档上调用print方法 this->EditList.at(this->Tab->currentIndex())->print(&printer); } delete dlg;

    打印预览

    定义槽函数
    private slots: void printPreview(QPrinter *);
    打印预览
    /* 打印预览 */ void MainWindow::on_action_PrintPreview_triggered() { QPrinter printer(QPrinter::HighResolution); QPrintPreviewDialog preview(&printer, this); connect(&preview, SIGNAL(paintRequested(QPrinter*)), this,SLOT(printPreview(QPrinter*))); preview.exec(); } /* 预览槽函数 */ void MainWindow::printPreview(QPrinter *printer) { this->EditList.at(this->Tab->currentIndex())->print(printer); }

    另存为PDF

    QString saveFileName = QFileDialog::getSaveFileName(this, "另存为PDF",QString("%1.pdf").arg(ID)); if(saveFileName.isEmpty()){ qDebug()<<"文件保存失败"; return; } QPrinter printer(QPrinter::HighResolution); printer.setOutputFormat(QPrinter::PdfFormat); printer.setOutputFileName(saveFileName); this->EditList.at(this->Tab->currentIndex())->document()->print(&printer);

    设置字体

    给所有QTextEdit对象统一设置字体

    bool ok; QFont font = QFontDialog::getFont(&ok, QFont("Consolas", 12), this); if (ok) { for(int i=0;i<EditList.size();i++) { EditList.at(i)->setFont(font); } qDebug()<<"成功设置颜色"; } else { qDebug()<<"颜色设置失败"; }

    撤销 返回 复制 粘贴 剪贴 全选

    QTextEdit::undo(); //撤销 QTextEdit::redo(); //返回 QTextEdit::copy(); //复制 QTextEdit::paste(); //粘贴 QTextEdit::cut(); //剪贴 QTextEdit::selectAll(); //全选

    QDesktopServices::openUrl(QUrl(QLatin1String("https://blog.csdn.net/qq_44519484")));

    参考文献

    [1] Qt官方示例application

    [2]Qt官方示例syntaxhighlighter

    Processed: 0.011, SQL: 9