Qt WPS(有源碼)

項目源碼地址:WPS完整源碼

一.項目詳情

該項目仿照WPS,實現了部分的功能,能夠很方便對文本和HTML進行修改,并且有打印功能,可以很方便的生成PDF。

  • 應用界面
    在這里插入圖片描述
  • 項目架構分析
    這個項目主要可分為兩個部分,一個是主窗體類,一個是文本編輯窗口,主窗體的中心部件是MDI容器,可以很方便的實現內嵌部件(也就是文本編輯類)

二. 項目部分功能結束

1.打印功能

這個功能核心的不是對QPrintDialog的運用

void MainWindow::on_actionPrint_triggered()
{TextEdit*edit=activateWindow();if(!edit) return ;//QPrinter::HighResolution 將Printer的分辨率設置為正在使用的打印機的分辨率QPrinter printer(QPrinter::HighResolution);//QPrintDialog 提供了一個用于指定打印機配置的對話框QPrintDialog dialog(&printer,this);//啟用打印選定內容選項
//    dialog.setOption(QAbstractPrintDialog::PrintSelection,true);
//    printer.setPrintRange(QPrinter::Selection);//設置打印范圍,打印選定文本if(dialog.exec()==QPrintDialog::Accepted){edit->print(&printer);}}

-打印界面
在這里插入圖片描述

  • 預覽界面
    在這里插入圖片描述

2.信號映射器實現

在窗口下可以排列出當前MDI所顯示的窗口信息,并且通過映射可以選中指定的窗口作為活動窗口。這個功能的核心主要是對QActionGroup活動組和QSignalMapper信號映射器的使用。

//aboutToShow在菜單顯示出來之前要發出的connect(ui->menu_W,&QMenu::aboutToShow,this,&MainWindow::addSubWindowAction);connect(mapper,SIGNAL(mapped(QWidget*)),this,SLOT(setActiveSubWindow(QWidget *)));
  1. 對窗口顯示進行綁定,當點擊窗口的時候,立即通過addSubWindowAction對窗口顯示信息進行修改。

  2. mapper實現的功能是將窗口顯示信息作為鍵,而窗口作為值,兩者進行綁定。

void MainWindow::addSubWindowAction()
{QList<QAction*> actionList=actionGroup->actions();if(!actionList.isEmpty())//釋放掉之前所有資源{for(QAction*action:actionList){delete action;}}QList<QMdiSubWindow *> subWindowList = ui->mdiArea->subWindowList();//獲取子窗體列表if(!subWindowList.isEmpty()){ui->menu_W->addSeparator();//添加分隔符}for(int i=0;i<subWindowList.count();i++){QMdiSubWindow*subWindow = subWindowList[i];//獲取子窗體TextEdit*edit=qobject_cast<TextEdit*>(subWindow->widget());//獲取內嵌部件QString action_text=QString("%1 %2").arg(i+1).arg(edit->getDocWindowTitle());QAction*action = ui->menu_W->addAction(action_text);actionGroup->addAction(action);action->setCheckable(true);if(edit==activateWindow()){action->setChecked(true); //對應活動窗口設置為選中狀態}//將action的triggered信號傳遞給信號映射器mapper,然后由mapper進行統一轉發connect(action,SIGNAL(triggered(bool)),mapper,SLOT(map()));mapper->setMapping(action,subWindow);//添加映射,設置信號發送對象與要發送的對象}}void MainWindow::setActiveSubWindow(QWidget *widget)
{//父類指針可以指向子類if(widget) ui->mdiArea->setActiveSubWindow(qobject_cast<QMdiSubWindow*>(widget));}

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/38238.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/38238.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/38238.shtml

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

相關文章

使用RNN模型構建人名分類器

使用RNN模型構建人名分類器 1 項目需求和實現分析 短文本分類問題 2 數據處理三部曲 場景1&#xff1a;數據處理三部曲示意圖 場景2&#xff1a;三個字母onehot編碼形狀分析 3 構建RNN模型 4 構建訓練函數并進行訓練 - 有關模型、損失函數、優化器三者在pytorch中的表示 5…

葉老師的新水杯c++

題目描述 最近葉老師換了個帶吸管的水杯。 貝貝發現當葉老師使用帶吸管的水杯時&#xff0c;每天會喝 x 毫升的水。而使用不帶吸管的水杯時&#xff0c;每天會喝 y 毫升的水。 請問在 n 天的時間內&#xff0c;葉老師喝水量的上限與下限相差多少&#xff1f; 輸入 第一行為…

聚焦Python分布式爬蟲必學框架Scrapy打造搜索引擎(一)

Scrapy綜述 Scrapy總體架構 Scrapy架構圖(綠線是數據流向) 適用于海量靜態頁面的數據下載 Scrapy Engine(引擎): 負責Spider、ItemPipeline、Downloader、Scheduler中間的通訊&#xff0c;信號、數據傳遞等。 Scheduler(調度器): 它負責接受引擎發送過來的Request請求&…

java.io.PrintStream介紹

java.io.PrintStream 是 Java 標準庫中的一個類&#xff0c;用于輸出流中的打印。它提供了一組方便的方法&#xff0c;用于格式化輸出和寫入數據。PrintStream 類中最常見的使用方式是通過 System.out 和 System.err 進行標準輸出和錯誤輸出。 System.out 和 System.err 都是 …

ELK 企業實戰7

ELKkafkafilebeat企業內部日志分析系統 1、組件介紹 1、Elasticsearch&#xff1a; 是一個基于Lucene的搜索服務器。提供搜集、分析、存儲數據三大功能。它提供了一個分布式多用戶能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java開發的&#xff…

【linux】chmod修改文件權限詳解

目錄 一.linux中默認的文件權限 二.文件權限類別 三.chmod改變權限的兩種方式 一.linux中默認的文件權限 默認文件權限: 當你新建一個文件時&#xff0c;文件會有一個默認的權限&#xff0c;這個默認權限就是umask的值&#xff0c;umask一般默認是022&#xff0c;這個值設…

FastAPI教程——部署

部署 部署FastAPI應用程序相對容易。 部署是什么意思 部署應用程序意味著執行必要的步驟以使其可供用戶使用。 對于Web API來說&#xff0c;通常涉及將上傳到云服務器中&#xff0c;搭配一個性能和穩定性都不錯的服務器程序&#xff0c;以便你的用戶可以高效地訪問你的應用…

智慧校園-報修管理系統總體概述

智慧校園報修管理系統是專為優化教育機構內部維修報障流程而設計的信息化解決方案&#xff0c;它通過集成現代信息技術&#xff0c;為校園設施的維護管理帶來革新。該系統以用戶友好和高效運作為核心&#xff0c;確保了從報修請求提交到問題解決的每一個步驟都順暢無阻。 師生或…

分享畫布繪制矩形

簡介 實現功能&#xff0c;在畫布上繪制矩形&#xff0c;移動矩形。 在線演示 繪制矩形 實現代碼 <!DOCTYPE html><html><head> <title>繪制矩形</title> </head><body><div style"margin: 10px"><input typ…

FastDFS部署

版本介紹 安裝fastdfs共需要倆個安裝包 fastdfs-5.05.tar.gz libfastcommon-1.0.7.tar.gz編譯安裝 libfastcommon tar -xvf libfastcommon-1.0.7.tar.gz cd libfastcommon-1.0.7 make.sh make.sh install 3. 設置軟鏈接 libfastcommon.so默認安裝到了/usr/lib64/libfastcommon.…

探索AI視覺革新:深入目標檢測算法

一、目標檢測算法概述 1. 什么是目標檢測&#xff1f; 目標檢測是計算機視覺任務的一部分&#xff0c;其目標是在圖像或視頻中識別和定位特定物體的位置和類別。與簡單的圖像分類任務不同&#xff0c;目標檢測要求算法能夠準確地標記出圖像中每個物體的位置&#xff0c;通常用…

5-linux文件路徑與文件目錄系統

目錄 ①文件路徑 目錄跳轉 絕對路徑與相對路徑 ②文件目錄系統 目錄系統組成 目錄命名規則 命令補充 ls命令補充 file filename查看文件類型 less查看文本文件 ①文件路徑 目錄跳轉 pwd:查看當前工作目錄。 cd:改變目錄。 ls:列出目錄內容。 [root########## ~]# …

某易六月實習筆試

第一題 下面代碼需要更改的地方已指出。 解題思路 模擬題&#xff0c;用雙指針記錄雙方當前式神&#xff0c;再記錄一下當前誰先手&#xff0c;直到有一方指針越界。 把下面代碼now1變為now(now1)%2就行。 第二題 解題思路 01背包變種&#xff0c;只是背包的容量變為多個維度…

CLAY或許是今年最值得期待的3D生成模型,號稱質量最好+布線最好+支持的輸入模態最多+支持材質生成。

CLAY是一種大規模可控生成模型,用于創建高質量的3D資產,它結合了多分辨率變分自編碼器和簡化的潛在擴散變壓器,通過多種輸入形式生成詳細的3D幾何結構和物理渲染材質。 CLAY或許是今年最值得期待的3D生成模型,號稱質量最好+布線最好+支持的輸入模態最多+支持材質生成。 相…

vue2+three.js實現火焰效果

// 火焰getFireMaterial() {const vertex ${ShaderChunk.logdepthbuf_pars_vertex} bool isPerspectiveMatrix(mat4) {return true; } varying vec4 m_pos; varying vec2 vUv; varying vec3 _flame; uniform float uTime; vec2 hash( vec2 p ){p vec2( dot(p,vec2(150.1,350…

EDA期末復習——基礎知識

個人名片&#xff1a; &#x1f393;作者簡介&#xff1a;嵌入式領域優質創作者&#x1f310;個人主頁&#xff1a;妄北y &#x1f4de;個人QQ&#xff1a;2061314755 &#x1f48c;個人郵箱&#xff1a;[mailto:2061314755qq.com] &#x1f4f1;個人微信&#xff1a;Vir2025WB…

The dependencies of some of the beans in the application context form a cycle

The dependencies of some of the beans in the application context form a cycle: 出現這種問題&#xff0c;如果你用其他方法怎么都處理不掉&#xff0c;可以使用最后的方法&#xff1a; 解決方案&#xff1a; 在配置文件增添一行配置即可&#xff1a; properties 配置文件 …

Spring Boot中的版本兼容性處理

Spring Boot中的版本兼容性處理 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01;今天我們來聊聊Spring Boot中的版本兼容性處理。Spring Boot的版本更新頻繁&…

Redis的使用

1 Redis屬于非關系型數據庫&#xff1a; 優勢&#xff1a;讀的速度快110000次/s 寫的速度81000次/s 支持持久化存儲 2 Redis的相關執行命令&#xff1a; 2-1 打開一個 cmd 窗口 使用 cd 命令切換目錄到 C:\redis 運行&#xff1a; redis-server.exe redis.windows.conf …

SaaS 出海:Databend Cloud 的定位與實踐

提到 “SaaS 出海”這個詞大家肯定并不陌生&#xff0c;SaaS 企業將業務拓展到海外市場已經成為許多 SaaS 公司的重要戰略方向。隨著企業對于靈活性、可擴展性以及成本效益需求的不斷增長&#xff0c; SaaS 模式提供了理想的解決方案。對于尋求出海機會的 SaaS 企業來說&#x…