Qt MainWindow简单例子(文本编辑)

embedded/2025/3/18 7:43:49/

使用Qt控件练习文本编辑窗口的创建。

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QLabel>
#include <QProgressBar>QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTprivate:QLabel* m_labFile;QProgressBar* m_proGressBar;QLabel* m_labInfo;
public:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_actionFile_New_triggered();void on_actionFile_Open_triggered();void on_actionFile_Save_triggered();void on_textEdit_copyAvailable(bool b);void on_textEdit_selectionChanged();void on_actionFont_Bold_triggered(bool checked);void on_actionFont_Italic_triggered(bool checked);void on_actionFont_UnderLine_triggered(bool checked);void on_fontSize_changed(int fontSize);void on_font_changed(QFont font);private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QActionGroup>
#include <QSpinBox>
#include <QFontComboBox>
#include <QProgressBar>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);QActionGroup* action_group = new QActionGroup(this);action_group->addAction(ui->actionLang_Chinese);action_group->addAction(ui->actionLang_English);action_group->setExclusive(true);QSpinBox* spinFontSize = new QSpinBox(this);spinFontSize->setMaximum(50);spinFontSize->setMinimum(5);spinFontSize->setValue(ui->textEdit->font().pointSize());spinFontSize->setMinimumWidth(50);ui->toolBar->addWidget(spinFontSize);QFontComboBox* comboFontBox = new QFontComboBox;comboFontBox->setMinimumWidth(150);comboFontBox->setFont(ui->textEdit->font());ui->toolBar->addWidget(comboFontBox);ui->toolBar->addSeparator();ui->toolBar->addAction(ui->actionClose);m_labFile = new QLabel(this);m_labFile->setMinimumWidth(150);m_labFile->setText("文件名: ");ui->statusbar->addWidget(m_labFile);m_proGressBar = new QProgressBar(this);m_proGressBar->setMinimum(5);m_proGressBar->setMaximum(50);m_proGressBar->setValue(ui->textEdit->font().pointSize());ui->statusbar->addWidget(m_proGressBar);m_labInfo = new QLabel("PermanentWidget");ui->statusbar->addPermanentWidget(m_labInfo);connect(spinFontSize, &QSpinBox::valueChanged, this, &MainWindow::on_fontSize_changed);connect(comboFontBox, &QFontComboBox::currentFontChanged, this, &::MainWindow::on_font_changed);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_actionFile_New_triggered()
{ui->textEdit->clear();ui->textEdit->document()->setModified(false);m_labFile->setText("文件名:新建一个文件");
}void MainWindow::on_actionFile_Open_triggered()
{m_labFile->setText("正在打开一个文件");
}void MainWindow::on_actionFile_Save_triggered()
{ui->textEdit->document()->setModified(false);m_labFile->setText("已经保存一个文件");
}void MainWindow::on_textEdit_copyAvailable(bool b)
{ui->actionEdit_Copy->setEnabled(b);ui->actionEdit_Cut->setEnabled(b);ui->actionEdit_Paste->setEnabled(ui->textEdit->canPaste());
}void MainWindow::on_textEdit_selectionChanged()
{QTextCharFormat fmt = ui->textEdit->currentCharFormat();ui->actionFont_Bold->setChecked(fmt.font().bold());ui->actionFont_Italic->setChecked(fmt.font().italic());ui->actionFont_UnderLine->setChecked(fmt.font().underline());
}void MainWindow::on_actionFont_Bold_triggered(bool checked)
{QTextCharFormat fmt = ui->textEdit->currentCharFormat();if(checked)fmt.setFontWeight(QFont::Bold);elsefmt.setFontWeight(QFont::Normal);//fmt.font().setBold(checked);ui->textEdit->setCurrentCharFormat(fmt);
}void MainWindow::on_actionFont_Italic_triggered(bool checked)
{QTextCharFormat fmt = ui->textEdit->currentCharFormat();// fmt.font().setItalic(checked);fmt.setFontItalic(checked);ui->textEdit->setCurrentCharFormat(fmt);
}void MainWindow::on_actionFont_UnderLine_triggered(bool checked)
{QTextCharFormat fmt = ui->textEdit->currentCharFormat();// fmt.font().setUnderline(checked);fmt.setFontUnderline(checked);ui->textEdit->setCurrentCharFormat(fmt);
}void MainWindow::on_fontSize_changed(int fontSize)
{QTextCharFormat fmt = ui->textEdit->currentCharFormat();fmt.setFontPointSize(fontSize);ui->textEdit->setCurrentCharFormat(fmt);m_proGressBar->setValue(fontSize);
}void MainWindow::on_font_changed(QFont font)
{QTextCharFormat fmt = ui->textEdit->currentCharFormat();fmt.setFont(font);ui->textEdit->setCurrentCharFormat(fmt);m_labInfo->setText("字体名称 " + font.family());
}
#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}


http://www.ppmy.cn/embedded/173522.html

相关文章

【Linux内核系列】:进程板块与文件板块的综合

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 人生中成功只是一时的&#xff0c;失败却是人生的主旋律&#xff0c;但是如何面对失败却把人分成了不同的样子&#xff0c;有的人会被…

泽众TestOne推出快速测试用例设计,让自动化更快捷

在当今快速迭代的软件开发环境中&#xff0c;测试用例设计的效率和质量直接关系到软件交付的速度和质量。传统测试用例设计方法往往依赖于测试人员的经验&#xff0c;经验不足的测试人员可能无法识别潜在的测试场景&#xff0c;导致关键问题被遗漏。同时&#xff0c;传统方法在…

Socket 、WebSocket、Socket.IO详细对比

WebSocket、Socket 和 Socket.IO 是网络通信中常用的技术&#xff0c;它们在功能、使用场景和实现方式上有明显的异同点。以下是它们的详细对比&#xff1a; 1. Socket 定义 Socket 是一个通用的网络编程接口&#xff0c;用于在网络上实现进程间通信&#xff08;IPC&#xff0…

变量和数据类型——Python

变量 计算机语言中变量的概念源于数学。在数学中&#xff0c;变量指用拉丁字母表示的、值不固定的数据&#xff1b;在计算机语言中&#xff0c;变量指能存储计算结果或表示值的抽象概念——程序在运行期间用到的数据会被保存在计算机的内存单元中。为了方便取内存单元中的数据…

DJ串烧集 2.4.5 | 海量大型DJ串烧歌曲,无广告,无需登录,高清在线播放

DJ串烧集APP是一款音乐播放软件&#xff0c;收录海量DJ串烧歌曲&#xff0c;涵盖多种音乐类型&#xff0c;适合DJ音乐爱好者。用户可以一键收藏喜欢的音乐&#xff0c;并创建歌单进行分类管理。提供高清的在线播放音质&#xff0c;还能下载无损音质的歌曲&#xff0c;随时随地享…

人工智能中的线性代数基础详解

‌ 线性代数是人工智能领域的重要数学基础之一,是人工智能技术的底层数学支柱,它为数据表示、模型构建和算法优化提供了核心工具。其核心概念与算法应用贯穿数据表示、模型训练及优化全过程。更多内容可看我文章:人工智能数学基础详解与拓展-CSDN博客 一、基本介绍 …

Search after解决ES深度分页问题

文章目录 1、search_after 的作用和意义2、search_after 的工作原理3、search_after 的使用方法4、注意事项5、与传统分页的对比6、总结 search_after 是 Elasticsearch 中用于实现深度分页的一种机制。相比于传统的 from 和 size 分页方式&#xff0c;search_after 更适合处理…

Redis Sentinel (哨兵模式)深度解析:构建高可用分布式缓存系统的核心机制

一、传统主从复制的痛点 在分布式系统架构中&#xff0c;Redis 作为高性能缓存和数据存储解决方案&#xff0c;其可用性直接关系到整个系统的稳定性。传统的主从复制架构虽然实现了数据冗余&#xff0c;但在面临节点故障时仍存在明显缺陷&#xff1a; ​手动故障转移&#xf…