Qt MainWindow簡單例子(文本編輯)

使用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.pswp.cn/bicheng/73605.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73605.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73605.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DeepSeek-prompt指令-當DeepSeek答非所問,應該如何準確的表達我們的訴求?

當DeepSeek答非所問&#xff0c;應該如何準確的表達我們的訴求&#xff1f;不同使用場景如何向DeepSeek發問&#xff1f;是否有指令公式&#xff1f; 目錄 1、 扮演專家型指令2、 知識蒸餾型指令3、 顆粒度調節型指令4、 時間軸推演型指令5、 極端測試型6、 逆向思維型指令7、…

Mac中nvm切換node版本失敗,關閉終端再次打開還是之前的node

Mac中使用 nvm 管理 node 版本&#xff0c;在使用指令&#xff1a;nvm use XXX 切換版本之后。 關閉終端&#xff0c;再次打開&#xff0c;輸入 node -v 還是得到之前的 node 版本。 原因&#xff1a; 在這里這個 default 中有個 node 的版本號&#xff0c;使用 nvm use 時&a…

織夢dedecmsV5.7提示信息提示框美化(帶安裝教程和效果展示)

一、效果展示 1、安裝前效果 2、安裝后效果 二、安裝說明 1、安裝測試版本&#xff1a;DedeCMS-V5.7.117-UTF8&#xff1b; 2、必須在修改代碼之前請做好文件備份&#xff0c;以免誤操無法恢復&#xff1b; 3、為了兼容其他版本&#xff0c;請在安裝時&#xff0c;最好將替…

Science Advances 視觸覺傳感機制的交互裝置,可以實時測量來自手不同部位的分布力

近日&#xff0c;由香港科技大學&#xff08;HKUST&#xff09;電子與計算機工程學系申亞京教授領導的研究團隊&#xff0c;提出了一種基于數字通道的觸覺交互系統&#xff0c;可以實時測量來自手不同部位的分布力&#xff0c;有望在醫學評估、體育訓練、機器人和虛擬現實&…

MySQL單表查詢大全【SELECT】

山再高&#xff0c;往上攀&#xff0c;總能登頂&#xff1b;路再長&#xff0c;走下去&#xff0c;定能到達。 Mysql中Select 的用法 ------前言------【SELECT】0.【準備工作】0.1 創建一個庫0.2 庫中創建表0.3 表中加入一些數據 1.【查詢全部】2.【查詢指定列】2.1查詢指定列…

Vue調用子組件init方法時報錯Cannot read properties of undefined (reading ‘init‘)解決方法

調用init方法語句寫在this.$nextTick(() > {});方法里&#xff0c;因為nextTick方法在頁面元素加載完之后調用 this.$nextTick(() > {this.$refs.chartComponent.init();});如果還報錯&#xff1a;Error in nextTick: "TypeError: Cannot read properties of undef…

怎么解決在Mac上每次打開文件夾都會彈出一個新窗口的問題

在Mac上每次打開文件夾都會彈出一個新窗口的問題&#xff0c;可以通過以下方法解決? ?調整Finder設置?&#xff1a; 打開Finder&#xff0c;點擊“Finder”菜單&#xff0c;選擇“偏好設置”。在偏好設置中&#xff0c;選擇“通用”標簽。取消勾選“在標簽頁中打開文件夾”或…

從 Prop Drilling 到 Context:React 狀態管理的演進與抉擇

Context的出現解決了什么問題&#xff1f; Vue中的provide/inject和React中的Context非常相似&#xff0c;具體區別如下&#xff1a; 可以看到實際上最大的區別在于Vue是響應式&#xff0c;React是非響應式 那么context具體解決了什么問題&#xff1f;我們先看下面這個例子&a…

考研408-數據結構完整代碼 線性表的順序存儲結構 - 順序表

線性表的順序存儲結構 - 順序表 1. 順序表的定義 ? 用一組地址連續的存儲單元依次存儲線性表的數據元素&#xff0c;從而使邏輯上相鄰的兩個元素在物理位置上也相鄰 2. 順序表的特點 隨機訪問&#xff1a; 即通過首地址和元素序號可以在O(1) 時間內找到指定元素&#xff0…

【經驗分享】SpringBoot集成WebSocket開發02 之 實現一個基本示例并Spring Bean注入的方式來組織代碼

結合Spring Boot和WebSocket實現一個基本示例&#xff0c;并且使用Spring Bean注入的方式來組織代碼。 1. 創建Spring Boot項目 首先&#xff0c;確保你有一個Spring Boot項目&#xff0c;并在pom.xml文件中引入了WebSocket相關的依賴。 <dependencies><!-- Spring…

DeepSeek-R1大模型微調技術深度解析:架構、方法與應用全解析

1. DeepSeek-R1大模型架構設計與技術特性 1.1 架構設計 DeepSeek-R1作為超大規模語言模型,其核心架構設計包含以下創新: 專家混合架構(MoE) 采用6710億參數的混合專家架構(MoE),每個推理過程僅激活370億參數,實現計算效率與資源利用率的突破性提升。 Transformer框架…

本地部署Hive集群

規劃 服務機器Hive本體部署在Node1元數據服務所需的關系型數據庫(MYSQL)部署在Node1 安裝MYSQL數據庫 # 更新密鑰 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022# 安裝Mysql yum庫 rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.…

緩存之美:Guava Cache 相比于 Caffeine 差在哪里?

大家好&#xff0c;我是 方圓。本文將結合 Guava Cache 的源碼來分析它的實現原理&#xff0c;并闡述它相比于 Caffeine Cache 在性能上的劣勢。為了讓大家對 Guava Cache 理解起來更容易&#xff0c;我們還是在開篇介紹它的原理&#xff1a; Guava Cache 通過分段&#xff08;…

2025年【廣東省安全員C證第四批(專職安全生產管理人員)】考試及廣東省安全員C證第四批(專職安全生產管理人員)模擬試題

安全生產是各行各業不可忽視的重要環節&#xff0c;特別是在廣東省這樣的經濟大省&#xff0c;安全生產的重要性更是不言而喻。為了確保安全生產管理人員具備足夠的專業知識和實際操作能力&#xff0c;廣東省定期舉辦安全員C證考試。本文將詳細介紹2025年廣東省安全員C證第四批…

傳輸層自學

傳輸實體&#xff1a;完成傳輸層任務的硬件或軟件 可能位于&#xff1a; 操作系統內核獨立的用戶進程綁定在網絡應用中的鏈接庫網絡接口卡 1.功能&#xff1a; 網絡層與傳輸層作用范圍比較&#xff1f; 網絡層負責把數據從源機送達到目的機 傳輸層負責把數據送達到具體的應…

【C語言】函數和數組實踐與應用:開發簡單的掃雷游戲

【C語言】函數和數組實踐與應用&#xff1a;開發簡單的掃雷游戲 1.掃雷游戲分析和設計1.1掃雷游戲的功能說明&#xff08;游戲規則&#xff09;1.2游戲的分析與設計1.2.1游戲的分析1.2.2 文件結構設計 2. 代碼實現2.1 game.h文件2.2 game.c文件2.3 test.c文件 3. 游戲運行效果4…

Spring Cloud Config - 動態配置管理與高可用治理

引言&#xff1a;為什么需要配置中心&#xff1f; 在微服務架構中&#xff0c;配置管理面臨分散化、多環境、動態更新三大挑戰。傳統基于application.yml等配置文件的硬編碼方式&#xff0c;導致以下問題&#xff1a; ? 環境差異&#xff1a;開發、測試、生產環境配置混雜&a…

Git 常用命令指南

本文檔旨在提供 Git 的常用命令及其使用示例&#xff0c;涵蓋全局參數配置、獲取本地倉庫、基本概念、本地倉庫操作、遠程倉庫操作和分支操作等內容。 1. 全局參數配置 Git 允許用戶配置全局參數&#xff0c;以便在所有的倉庫中共享這些設置。 <BASH> # 設置用戶名 gi…

基于Python+Flask+MySQL+HTML的爬取豆瓣電影top-250數據并進行可視化的數據可視化平臺

FlaskMySQLHTML 項目采用前后端分離技術&#xff0c;包含完整的前端&#xff0c;以flask作為后端 Pyecharts、jieba進行前端圖表展示 通過MySQL收集格列數據 通過Pyecharts制作數據圖表 這是博主b站發布的詳細講解&#xff0c;感興趣的可以去觀看&#xff1a;【Python爬蟲可…

rpc grpc

RPC Remote Procedure Call&#xff0c;遠程過程調用&#xff0c;是用來屏蔽分布式計算中的各種調用細節&#xff0c;使得調用遠端的方法就像調用本地的一樣。 客戶端與服務端溝通的過程 客戶端發送數據(以字節流的方式)&#xff1b;&#xff08;編碼&#xff09;服務端接受…