QT文件操作(QT實操學習3)

1.項目架構

1.UI界面

1.新建文本文檔

2.打開文件

3.另存為文件

2.mainwindow.h?

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QFileDialog>
#include <QMessageBox>
#include <QDebug>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void newActionSlot();void openActionSlot();void saveActionSlot();private:Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

3.main.cpp?

#include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

3.mainwindow.cpp?

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->newAction,&QAction::triggered,this,&MainWindow::newActionSlot);connect(ui->openAction,&QAction::triggered,this,&MainWindow::openActionSlot);connect(ui->saveAction,&QAction::triggered,this,&MainWindow::saveActionSlot);}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::newActionSlot()
{ui->textEdit->clear();this->setWindowTitle("新建文本文檔.txt");
}void MainWindow::openActionSlot()
{QString fileName = QFileDialog::getOpenFileName(this, "open",QCoreApplication::applicationFilePath(),"*.cpp");if (fileName.isEmpty()){QMessageBox::warning(this,"警告","請選擇一個文件");}else{
//        qDebug()<<fileName;QFile file(fileName);//創建文件對象file.open(QIODevice::ReadOnly);QByteArray ba = file.readAll();ui->textEdit->setText(QString(ba));file.close();}}void MainWindow::saveActionSlot()
{QString fileName = QFileDialog::getSaveFileName(this,"save",QCoreApplication::applicationFilePath());if (fileName.isEmpty()){QMessageBox::warning(this,"警告","請選擇一個文件");}else{QFile file(fileName);//創建文件對象file.open(QIODevice::WriteOnly);QByteArray ba;ba.append(ui->textEdit->toPlainText());file.write(ba);file.close();}
}

2. 程序講解

1. 初始化界面

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->newAction, &QAction::triggered, this, &MainWindow::newActionSlot);connect(ui->openAction, &QAction::triggered, this, &MainWindow::openActionSlot);connect(ui->saveAction, &QAction::triggered, this, &MainWindow::saveActionSlot);
}
  • 界面設置:構造函數中初始化UI組件。

  • 信號槽連接:將菜單項的動作(新建、打開、保存)與對應的槽函數連接起來。

2. 新建文件

void MainWindow::newActionSlot()
{ui->textEdit->clear();this->setWindowTitle("新建文本文檔.txt");
}
  • 清空文本:調用textEdit->clear()清空文本編輯器的內容。

  • 設置窗口標題:將窗口標題設置為“新建文本文檔.txt”。

3. 打開文件

void MainWindow::openActionSlot()
{QString fileName = QFileDialog::getOpenFileName(this, "open",QCoreApplication::applicationFilePath(), "*.cpp");if (fileName.isEmpty()){QMessageBox::warning(this, "警告", "請選擇一個文件");}else{QFile file(fileName);file.open(QIODevice::ReadOnly);QByteArray ba = file.readAll();ui->textEdit->setText(QString(ba));file.close();}
}
  • 打開文件對話框:使用QFileDialog::getOpenFileName打開文件選擇對話框。

  • 檢查文件名:如果用戶沒有選擇文件,顯示警告消息。

  • 讀取文件內容:打開文件,讀取所有內容,并將其顯示在文本編輯器中。

4. 保存文件

void MainWindow::saveActionSlot()
{QString fileName = QFileDialog::getSaveFileName(this, "save",QCoreApplication::applicationFilePath());if (fileName.isEmpty()){QMessageBox::warning(this, "警告", "請選擇一個文件");}else{QFile file(fileName);file.open(QIODevice::WriteOnly);QByteArray ba;ba.append(ui->textEdit->toPlainText());file.write(ba);file.close();}
}
  • 打開保存對話框:使用QFileDialog::getSaveFileName打開文件保存對話框。

  • 檢查文件名:如果用戶沒有選擇文件,顯示警告消息。

  • 寫入文件內容:打開文件,將文本編輯器中的內容寫入文件。

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

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

相關文章

HX324雙運算放大器:賦能萬物互聯時代的信號處理基石

一、運算放大器行業的技術演進與市場需求 在全球半導體市場規模突破6000億美元的背景下&#xff0c;模擬芯片作為電子系統的"感官神經"&#xff0c;正迎來智能化升級浪潮。據IC Insights數據顯示&#xff0c;2023年全球運算放大器市場規模達32.7億美元&#xff0c;其…

C++ 結構體與函數

一.結構體 1.概念&#xff1a; 結構體&#xff08;struct&#xff09;是一種用戶自定義復合數據類型&#xff0c;其中可以包含不同類型的不同成員 2.結構體的應用場景&#xff1a; 我們在使用多個變量描述一個對象時&#xff0c;雖然也可以做到&#xff0c;但是難免顯得雜亂…

Python數據可視化-第1章-數據可視化與matplotlib

環境 開發工具 VSCode庫的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本書為《Python數據可視化》一書的配套內容&#xff0c;本章為第1章 數據可視化與matplotlib 本文主要介紹了什么是數據集可視化&#xff0c;數據可視化的目的&#xff0c;常見的數據可視化方式…

ESLint報錯:Could not find config file.

如果你的ESLint的版本大于 8&#xff0c;同時使用 .eslinrc.js 和 .eslintignore 作為配置文件&#xff0c;且目前用的是 VSCODE &#xff0c;就有可能遇到報錯&#xff1a; Could not find config file. 這個是因為 VSCode 中 ESLint 插件的配置 eslint.useFlatConfig 的問題…

基于SpringBoot的“醫療設備管理系統”的設計與實現(源碼+數據庫+文檔+PPT)

基于SpringBoot的“醫療設備管理系統”的設計與實現&#xff08;源碼數據庫文檔PPT) 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系統展示 系統總體功能模塊圖 系統E-R圖 系統登錄界面 …

WordPress漢主題

WordPress漢主題wphan.com(以下簡稱WP漢主題)是一個專注于WordPress中文主題與插件開發的專業團隊。該團隊致力于為中文用戶提供高質量的WordPress主題和插件資源&#xff0c;幫助用戶輕松創建專業且吸引人的網站。 WP漢主題提供多種功能豐富的WordPress主題&#xff0c;涵蓋博…

arthas之jvm相關命令

文章目錄 1. dashboard2. thread線程相關3. jvmTHREAD相關文件描述符相關 4. sysprop5. 小結6. sysenv7. vmoption8. getstatic9. ognl10. 小結 1. dashboard 作用&#xff1a;顯示當前系統的實時數據面板&#xff0c;按q或ctrlc退出 數據說明 ID: Java級別的線程ID&#xff…

小米平板 4 Plus 玩機日志

在一次偶然中&#xff0c;我從一個角落中找到了這臺小米平板 4 Plus&#xff08;是的&#xff0c;現在正在用這個平板寫這篇文章&#xff09;。在找到她的時候&#xff0c;她已經奄奄一息了&#xff0c;即使按動那脆弱的電源鍵也沒有任何響應。 在給她補充能源后&#xff0c;她…

MSYS2學習筆記

前言 本文內容是MSys2 Documentation的學習筆記可以使用MSYS2編譯QGis 學習筆記 什么是MSYS2&#xff1f; MSYS2&#xff08;Minimal System 2&#xff09;是一個為Windows平臺打造的軟件開發環境和包管理系統&#xff0c;它結合了Cygwin的POSIX兼容層、Arch Linux的pacman…

gnvm切換node版本號

1. gnvm下載官網 GNVM - Node.js version manager on Windows by Go 2. 安裝 2.1 不存在 Node.js 環境 下載并解壓縮 gnvm.exe 保存到任意文件夾&#xff0c;并將此文件夾加入到環境變量 Path。 2.2 存在 Node.js 環境 下載并解壓縮 gnvm.exe 保存到 Node.js 所在的文件夾。 2.…

目標檢測 AP 計算 實例 python

以下是使用 Python 實現目標檢測中 ?Average Precision (AP)? 計算的完整實例&#xff0c;包含代碼和注釋。這里以 ?Pascal VOC 標準? 為例&#xff08;IoU閾值0.5&#xff09;。 步驟1&#xff1a;準備數據 假設&#xff1a; gt_boxes: 真實標注框列表&#xff0c;格式為 …

AWS用Glue讀取S3文件上傳數據到Redshift,再導出到Quicksight完整版,含VPC配置

1. 項目背景 AWS的官方文檔&#xff0c;關于Glue和Vpc配置部分已經比較舊了&#xff0c;按照官方文檔配置的流程始終跑不通&#xff0c;花了一番時間和波折后&#xff0c;才終于完整的跑通了。 在數據分析和商業智能&#xff08;BI&#xff09;領域&#xff0c;我們常需要將存…

SpringBoot詳細教程(持續更新中...)

SpringBoot 一、概述 Springboot有哪些特點呢&#xff1f;或者說它跟Spring比有哪些優點呢&#xff1f; 1、起步依賴 通俗的說&#xff0c;就是一個依賴包含了很多個依賴&#xff1b;好處是引入所需的依賴更加簡便&#xff0c;而且有效避免了依賴之間的版本沖突問題&#xf…

亞馬遜玩具品類技術驅動型選品策略:從趨勢洞察到合規基建

一、全球玩具電商技術演進趨勢 &#xff08;技術化重構原市場背景&#xff09; 數據可視化分析&#xff1a;通過亞馬遜SP-API抓取2023年玩具品類GMV分布熱力圖 監管技術升級&#xff1a; 美國CPSC啟用AI質檢系統&#xff08;缺陷識別準確率92.7%&#xff09; 歐盟EPR合規接口…

spring boot 整合redis

1.在pom文件中添加spring-boot-starter-data-redis依賴啟動器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.編寫三個實體類 RedisHash("p…

python 語法篇(一)

目錄 1 正則匹配注意點11.1 正則匹配字符串寫法1.2 創建re函數&#xff08;1&#xff09;re.search()--搜索第一個匹配項&#xff08;2&#xff09;re.match() - 從字符串開頭匹配&#xff08;3&#xff09;re.findall() - 返回所有匹配項的列表&#xff08;4&#xff09;re.fi…

深度學習Note.4(機器學習實踐)

線性回歸 零. 1.paddle庫的一些API paddle.rand(shape,dtype None, name None) *隨機生成符合均勻分布的Tensor paddle.nromal(mean 0.0, std 1.0, shape None, name None) *隨機生成符合正態分布的Tensor *輸入正態分布均值&#xff0c;標準差&#xff0c; 生成結果的…

UE5學習筆記 FPS游戲制作29 更換武器時更換武器的圖標

文章目錄 制作物體圖標UI添加獲取武器圖標的方法使用事件分發器&#xff0c;通知UI要換槍定義事件分發器調用事件分發器注冊事件分發器 制作物體圖標UI 在Fpp-UI上添加一個圖片&#xff0c;改名為五weaponIcon&#xff0c;勾選SizeToContent,錨點放在右下角&#xff0c;對齊改…

RCE(自增、取反、異或)

自增: 也就是說&#xff0c;a > b&#xff0c;b > c... 所以&#xff0c;我們只要能拿到一個變量&#xff0c;其值為a&#xff0c;通過自增操作即可獲得a-z中所有字符。 無字母數字構造&#xff1a; 所有敏感字符串&#xff08;ASSERT、_POST&#xff09;通過自增動態生…

從架構角度談談云原生架構

1、云原生架構起源 隨著云服務商的成熟&#xff0c;客戶面臨著將服務直接使用云平臺的服務部署在云平臺上&#xff0c;或者采用本地和云上混合部署的模式來對外提供服務&#xff0c;從解決方案的角度來說&#xff0c;采用云原生架構的優點有&#xff1a; 可以利用云服務的管理…