最终效果图:


代码:
mainwindow.h
| namespace Ui { class MainWindow; } |
| class MainWindow : public QMainWindow |
| QProgressBar *progressBar; |
| QFontComboBox *comboFont; |
| MainWindow(QWidget *parent = nullptr); |
| void on_actBold_triggered(bool checked); |
| void on_acttalic_triggered(bool checked); |
| void on_actUnderline_triggered(bool checked); |
| void on_textEdit_copyAvailable(bool b); |
| void on_textEdit_selectionChanged(); |
| void on_spinBoxFontSize_valueChanged(int aFontSize); |
| void on_comboFont_currentIndexChanged(const QString &arg1); |
mainwindow.cpp:
| #include "ui_mainwindow.h" |
| void MainWindow::initUI() |
| fLabCurFile->setMidLineWidth(150); |
| fLabCurFile->setText("当前文件:"); |
| ui->statusbar->addWidget((fLabCurFile)); |
| progressBar = new QProgressBar |
| progressBar->setMinimum(5); |
| progressBar->setMaximum(50); |
| progressBar->setValue(ui->textEdit->font().pointSize()); |
| ui->statusbar->addWidget(progressBar); |
| spinFontSize = new QSpinBox |
| spinFontSize->setMinimum(5); |
| spinFontSize->setMaximum(50); |
| ui->toolBar->addWidget(new QLabel("字体大小")); |
| ui->toolBar->addWidget(spinFontSize); |
| comboFont = new QFontComboBox |
| comboFont->setMinimumWidth(5); |
| comboFont->setMaximumWidth(50); |
| ui->toolBar->addWidget(new QLabel("字体")); |
| ui->toolBar->addWidget(comboFont); |
| void MainWindow::iniSignalSlots() |
| connect(spinFontSize,SIGNAL(valueChanged(int)), |
| this,SLOT(on_spinBoxFontSize_valueChanged(int))); |
| connect(comboFont,SIGNAL(currentIndexChanged(const QString&)), |
| this,SLOT(on_comboFont_currentIndexChanged(const QString&))); |
| MainWindow::MainWindow(QWidget *parent) |
| setCentralWidget(ui->textEdit); |
| MainWindow::~MainWindow() |
| void MainWindow::on_actBold_triggered(bool checked) |
| //fmt = ui->textEdit->currentCharFormat(); //可以省略 |
| fmt.setFontWeight(QFont::Bold); |
| fmt.setFontWeight(QFont::Normal); |
| ui->textEdit->mergeCurrentCharFormat(fmt); |
| void MainWindow::on_acttalic_triggered(bool checked) |
| //fmt = ui->textEdit->currentCharFormat(); //可以省略 |
| fmt.setFontItalic(QFont::StyleItalic); |
| fmt.setFontItalic(QFont::Normal); |
| ui->textEdit->mergeCurrentCharFormat(fmt); |
| void MainWindow::on_actUnderline_triggered(bool checked) |
| //fmt = ui->textEdit->currentCharFormat(); //可以省略 |
| fmt.setFontUnderline(QFont::UnderlineResolved); |
| fmt.setFontItalic(QFont::Normal); |
| ui->textEdit->mergeCurrentCharFormat(fmt); |
| void MainWindow::on_textEdit_copyAvailable(bool b) |
| ui->actcut->setEnabled(b); |
| ui->actcopy->setEnabled(b); |
| ui->actpaste->setEnabled(ui->textEdit->canPaste()); |
| void MainWindow::on_textEdit_selectionChanged() |
| fmt=ui->textEdit->currentCharFormat() |
| ui->acttalic->setChecked(fmt.fontItalic()); |
| ui->actBold->setChecked(fmt.font().bold()); |
| ui->actUnderline->setChecked(fmt.fontUnderline()); |
| void MainWindow::on_spinBoxFontSize_valueChanged(int aFontSize) |
| fmt.setFontPointSize(aFontSize); |
| ui->textEdit->mergeCurrentCharFormat(fmt); |
| progressBar ->setValue(aFontSize); |
| void MainWindow::on_comboFont_currentIndexChanged(const QString &arg1) |
| ui->textEdit->mergeCurrentCharFormat(fmt); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义