国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

05應(yīng)用程序設(shè)計(jì)和文件操作

這篇具有很好參考價(jià)值的文章主要介紹了05應(yīng)用程序設(shè)計(jì)和文件操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、 給應(yīng)用程序設(shè)置菜單欄

比如:

在qt中,如果想要使用菜單欄功能,那么界面的基類要選擇QMainWindow,不能選擇QWidget QDialog
實(shí)現(xiàn)菜單欄步驟如下:
第一步:在UI設(shè)計(jì)師,直接雙擊菜單欄
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

第二步:在UI設(shè)計(jì)師,修改文本內(nèi)容和其他設(shè)置
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

進(jìn)行設(shè)置
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

設(shè)置的效果圖如下:
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

給菜單選項(xiàng),增加圖片資源
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

二、輸入對(duì)話框(QInputDialog)

讓用戶比較方便的輸入一些單一信息(The QInputDialog class provides a simple convenience dialog to get a single value from the user)
頭文件:
#include
在Qt中,提供了五個(gè)方法來(lái)給用戶使用
Five static convenience functions are provided: getText(), getMultiLineText(), getInt(), getDouble(), and getItem()
靜態(tài)函數(shù)的原型:

參數(shù) 用處
QString getText(QWidget *parent, const QString &title, const QString &label, QLineEdit::EchoMode mode = QLineEdit::Normal, const QString &text = QString(), bool *ok = nullptr, Qt::WindowFlags flags = Qt::WindowFlags(), Qt::InputMethodHints inputMethodHints = Qt::ImhNone)

功能:返回一個(gè)單行的字符串信息
參數(shù)說(shuō)明:

  • 參數(shù)一:QWidget *parent ----- 輸入對(duì)話框的 父部件,一般傳this
  • 參數(shù)二:const QString &title ---- 輸入對(duì)話框的標(biāo)題,用戶自定義
  • 參數(shù)三:const QString &label ---- 輸入信息提示 用戶定義
    后面的參數(shù)默認(rèn)即可
  • 返回值:?jiǎn)涡休斎氲淖址畔?br> 具體用法:
void InputDialogWin::on_inputSetButton_clicked()
{
     //[1] 打開(kāi)輸入對(duì)話框,
  // QString name =  QInputDialog::getText(this,"名字修改","請(qǐng)重新輸入名字:"); //單行輸入
   QString name= QInputDialog::getMultiLineText(this,"名字修改","請(qǐng)重新輸入名字:"); //多行輸入
     //[2] 輸入信息 ---- >在輸入對(duì)話框中,完成
    // [3] 得到它的返回值,并更新到UI
     ui->nameLabel->setText(name);
}

三、QFile---- 文件類

該類是一個(gè)用戶讀寫文件的接口,它繼承于QFileDevice
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

在QIODevice類中,定義了訪問(wèn)I/O設(shè)備接口:
QFile is an I/O device for reading and writing text and binary files and resources(QFile類可以讀寫文本文件、二進(jìn)制文件及資源文件),對(duì)于文件的讀寫還可以使用QTextStream or QDataStream.

讀接口:

參數(shù) 用處
qint64 read(char *data, qint64 maxSize)//一次讀取maxSize大小的數(shù)據(jù)存放在以data為首的內(nèi)存地址上
QByteArray read(qint64 maxSize)
QByteArray readAll()—>一次性讀取所有的數(shù)據(jù)

按行來(lái)讀取文件

qint64readLine(char *data, qint64 maxSize)QByteArrayreadLine(qint64 maxSize = 0)

參數(shù)說(shuō)明:

  • char *data ----- 存放讀取出來(lái)數(shù)據(jù)首地址
  • qint64 maxSize ------ 讀取的長(zhǎng)度,如果不夠,則按實(shí)際的來(lái)讀取
  • 返回值: QByteArray 通常我們會(huì)將轉(zhuǎn)它自動(dòng)轉(zhuǎn)換化QString
參數(shù) 用處
QString & operator=(const QByteArray &ba)
QString data = file.readAll();

寫接口:

參數(shù) 用處
qint64 write(const char *data, qint64 maxSize)
qint64 write(const char *data)
qint64 write(const QByteArray &byteArray)

參數(shù)說(shuō)明:

  • const char *data ----- 寫入數(shù)據(jù)的首地址
  • qint64 maxSize ---- 寫入的大小,如果不夠,則按實(shí)際寫入
  • const QByteArray &byteArray ------> 寫一個(gè)字節(jié)數(shù)組
    而我們通常獲取到的數(shù)據(jù)是QString
    QString類提供成員函數(shù)如下:
參數(shù) 用處
QByteArray toUtf8() const

功能:將QString轉(zhuǎn)換QByteArray

QFile功能接口函數(shù):

參數(shù)
QFile(const QString &name, QObject *parent)
QFile(QObject *parent)
QFile(const QString &name)

該構(gòu)造函數(shù)可以通過(guò)指定一個(gè)文件的路徑,從而得到一個(gè)文件對(duì)象
QFile() 和

參數(shù) 用處
void setFileName(const QString &name)

打開(kāi)文件接口函數(shù)

bool QFile::open(QIODevice::OpenMode mode)

功能:以指定的方式來(lái)打開(kāi)文件

  • QIODevice::ReadOnly ----- 只讀
  • QIODevice::WriteOnly ---- 只寫
  • QIODevice::ReadWrite ---- 讀寫
  • QIODevice::Append ----- 以在文件末尾追加數(shù)據(jù)
  • QIODevice::Truncate ---- 將文件的長(zhǎng)度截?cái)酁榱悖敲次募臄?shù)據(jù)為空

備注:如果文件不存在時(shí),想要?jiǎng)?chuàng)建文件,那么指定的方式要是WriteOnly or ReadWrite

如果QT中,在打開(kāi)一個(gè)文件時(shí),該文件不存在,那么,想要自動(dòng)創(chuàng)建它,則打開(kāi)文件時(shí),必須要有寫的權(quán)限:QIODevice::WriteOnly 或者 QIODevice::ReadWrite

    //[1]打開(kāi)一個(gè)文件
    QFile file("./text.txt"); //當(dāng)前路徑下的txt文件,如果該文件不存在,那么自動(dòng)創(chuàng)建

   //[2] open
    if(file.open(QIODevice::ReadWrite))
    {
         QString data = "helloworld";

         file.write(data.toUtf8());
    }

file.close();

05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

在讀文件數(shù)據(jù)時(shí),可能出現(xiàn)的情況:
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

讀文件數(shù)據(jù)的方式:

 QFile file1("C:/Users/PC/Desktop/text.txt");
    if(file1.open(QIODevice::ReadOnly))
    {
        QString data = file1.readLine();
        ui->label->setText(data);
#if 0
        while(!file1.atEnd())
        {
            QString data = file1.readLine();
            qDebug() << data;
		}
#endif
}
file1.close();

四 JSON數(shù)據(jù)格式

JSON就是數(shù)據(jù)封裝形式,它是用來(lái)封裝數(shù)據(jù),相當(dāng)于一個(gè) 包裝盒子。
JSON基本概念:

  1. JSON對(duì)象 ---- > 單個(gè)類型的數(shù)據(jù),比如:int char string
  2. JSON數(shù)組 ----> 相當(dāng)于一個(gè)數(shù)組,可以用來(lái)存放:int char ,類類型

在數(shù)據(jù)封裝的格式中,

  1. 使用符號(hào)“{ }" 代表JSON對(duì)象
  2. 使用符號(hào)"[ ]"代表數(shù)組

JSON對(duì)象和JSON數(shù)組的關(guān)系:

  • JSON對(duì)象可以嵌套JSON數(shù)組
  • JSON數(shù)組可以嵌套JSON對(duì)象
  • JSON對(duì)象可以嵌套JSON對(duì)象
  • JSON數(shù)組可以嵌套JSON數(shù)組

了解JSON數(shù)據(jù)格式:

{  ---- json對(duì)象
    "error_code": 0, /*返回碼*/
    "reason": "請(qǐng)求成功!",
    "result": [ --- json數(shù)組
        {  ---- 數(shù)據(jù)中的元素的類型為json對(duì)象
            "day": 1,  /*日*/
            "des": "1907年11月1日 電影導(dǎo)演吳永剛誕生   吳永剛,1907年11月1日生于江蘇吳縣。1932年后參加影片《三個(gè)摩登女性》、《母性之光》的拍攝工作。1934年在聯(lián)華影片公司編導(dǎo)處女作《神女》,一舉成名,...",  /*描述*/
            "id": 9000,  /*事件ID*/
            "lunar": "丁未年九月廿六",
            "month": 11,  /*月份*/
            "pic": "",  /*圖片*/
            "title": "電影導(dǎo)演吳永剛誕生",  /*事件標(biāo)題*/
            "year": 1907  /*年份*/
        },
        {
            "day": 1,
            "des": "1902年11月1日 挪威作家格里格誕生   格里格,1902年11月1日生于卑爾根。挪威作家。   青年時(shí)代在奧斯陸和牛津求學(xué),好旅行。1924年出版描寫海員生活的小說(shuō)《航船在前進(jìn)》。1926年至1927年在...",
            "id": 9010,
            "lunar": "壬寅年十月初二",
            "month": 11,
            "pic": "",
            "title": "挪威作家格里格誕生",
            "year": 1902
        },
        {
            "day": 1,
            "des": "1911年11月1日,清廷宣布解散皇族內(nèi)閣,任命袁世凱為內(nèi)閣總理大臣,要他趕快從前線回京,籌組“責(zé)任內(nèi)閣”。11月13日,袁世凱抵達(dá)北京,16日組織新內(nèi)閣,以梁郭彥為外務(wù)大臣,趙秉鈞為民政大臣,...",
            "id": 3577,
            "lunar": "辛亥年九月十一",
            "month": 11,
            "pic": "",
            "title": "袁世凱出任清朝內(nèi)閣總理大臣",
            "year": 1911
        }
    ]
}

從上面的格式可以看出:JSON數(shù)據(jù)都是鍵值對(duì)(key-value),可以通過(guò)鍵來(lái)獲取對(duì)應(yīng)的值

在解析數(shù)據(jù)之前,必須要保證數(shù)據(jù)格式的正確性,可以在網(wǎng)上直接在線驗(yàn)證格式:https://www.sojson.com/

在Qt中,對(duì)于JSON數(shù)據(jù)的接口:使用面向?qū)ο蟮乃枷雭?lái)進(jìn)行描述

  • JSON文件 ------ 后綴(json)QJsonDocument 比如:hello.json
  • JSON對(duì)象 -----QJsonObject
  • JSON數(shù)組 ------ QJsonArray

關(guān)于json接口類,這些類是屬于QT += core
05應(yīng)用程序設(shè)計(jì)和文件操作,QT,qt

在Qt中,解析JSON數(shù)據(jù)步驟:

  1. 第一步:將JSON文件轉(zhuǎn)換成QJsonDocument對(duì)象,具體來(lái)講,是將json文件中的數(shù)據(jù)轉(zhuǎn)換成
    json文檔對(duì)象
       QJsonDocument 
fromJson(const QByteArray &json, QJsonParseError *error = nullptr)

功能:將QByteArray &json轉(zhuǎn)換成QJsonDocument

參數(shù)說(shuō)明:

  • QByteArray &json ------- json數(shù)據(jù),它可以從JSON文件中進(jìn)行讀取
  1. 第二步:從QJsonDocument對(duì)象中將JSON數(shù)據(jù)拿出來(lái)
    對(duì)于QJsonDocument中,只有兩個(gè)部分組成:QJsonArray和 QJsonObject
參數(shù) 用處
QJsonObject object() const

功能:從QJsonDocument中得到一個(gè)QJsonObject

參數(shù) 用處
QJsonArray array() const

功能:從QJsonDocument中得到一個(gè)QJsonArray

  1. 第三步: 要 根據(jù)提供的數(shù)據(jù)格式來(lái)解析數(shù)據(jù)

在解析之前,必須要驗(yàn)證數(shù)據(jù)格式是否正確:https://www.sojson.com/

{
	"user": [{
			"name": "張三",
			"password": "123456"
		},
		{
			"name": "李四",
			"password": "123456"
		},
		{
			"name": "王五",
			"password": "123456"
		}
	]
}

第四步:將數(shù)據(jù)讀取,并使用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-651685.html

QFile file("C:/Users/PC/Desktop/user.json");
    //讀取JSON文件的數(shù)據(jù) ----- QByteArray
    file.open(QIODevice::ReadOnly);
   QByteArray array =  file.readAll();
    qDebug() << array;
    // 將QByteArray轉(zhuǎn)換成QJsonDocument
   // QJsonDocument
    //fromJson(const QByteArray &json, QJsonParseError *error = nullptr)
    QJsonDocument doc = QJsonDocument::fromJson(array);
    //根據(jù)JSON文件中的數(shù)據(jù)格式,來(lái)得到QJsonObject 或 QJsonArray

   QJsonObject object = doc.object();
    //根據(jù)數(shù)據(jù)格式和key-value來(lái)讀取數(shù)據(jù)
      QJsonArray jsonArray =   object.value("user").toArray();

   for (int i=0;i<jsonArray.size();i++) {
         QJsonObject userObject =  jsonArray.at(i).toObject();
        qDebug() << userObject.value("name").toString();
        qDebug() << userObject.value("password").toString();
      }

到了這里,關(guān)于05應(yīng)用程序設(shè)計(jì)和文件操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • QT踩坑之子線程不能操作UI,否則應(yīng)用程序卡死

    QT踩坑之子線程不能操作UI,否則應(yīng)用程序卡死

    QT易踩坑之在子線程中操作UI,造成應(yīng)用程序卡死! 這里調(diào)用SDKGetMemberInfo()接口可能是個(gè)耗時(shí)操作,因此我們使用 QtConcurrent啟動(dòng)一個(gè)線程 來(lái)執(zhí)行該函數(shù),若返回值為0,則主界面彈出提示語(yǔ)\\\"Examples of briquette elves\\\"(如何彈出提示語(yǔ)就是另一個(gè)故事了,這里我們不過(guò)多關(guān)注,但重

    2024年02月06日
    瀏覽(35)
  • Qt中的配置文件:實(shí)現(xiàn)個(gè)性化應(yīng)用程序配置與保存加載

    在現(xiàn)代軟件開(kāi)發(fā)中,用戶對(duì)于應(yīng)用程序的個(gè)性化配置和設(shè)置變得越來(lái)越重要。為了滿足用戶需求并提供更好的用戶體驗(yàn),開(kāi)發(fā)人員常常需要實(shí)現(xiàn)一種機(jī)制,以便在每次啟動(dòng)應(yīng)用程序時(shí)能夠記住用戶上次的配置。這樣用戶就可以方便地恢復(fù)到他們熟悉的環(huán)境,無(wú)需重新進(jìn)行所有

    2024年02月11日
    瀏覽(31)
  • 06-3_Qt 5.9 C++開(kāi)發(fā)指南_多窗體應(yīng)用程序的設(shè)計(jì)(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計(jì))

    06-3_Qt 5.9 C++開(kāi)發(fā)指南_多窗體應(yīng)用程序的設(shè)計(jì)(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計(jì))

    常用的窗體基類是QWidget、QDialog 和QMainWindow,在創(chuàng)建 GUI應(yīng)用程序時(shí)選擇窗體基類就是從這 3 個(gè)類中選擇。QWidget 直接繼承于 QObject,是 QDialog 和 QMainWindow 的父類,其他繼承于 QWidget 的窗體類還有 QSplashScreen、QMdiSubWindow和QDesktopWidget。另外還有一個(gè)類QWindow,它同時(shí)從 QObject 和Q

    2024年02月13日
    瀏覽(26)
  • <QT開(kāi)發(fā)> QT開(kāi)發(fā)工具-之-QT應(yīng)用程序打包

    <QT開(kāi)發(fā)> QT開(kāi)發(fā)工具-之-QT應(yīng)用程序打包

    <QT開(kāi)發(fā)> QT開(kāi)發(fā)工具-之-QT應(yīng)用程序打包 筆者為什么會(huì)寫這篇文章呢?這是因?yàn)?,筆者使用windows QT開(kāi)發(fā)了一個(gè)測(cè)試工具。目的是通過(guò)TCP/IP測(cè)試其它應(yīng)用程序。首先這個(gè)QT程序是筆者自己開(kāi)發(fā)的,所以筆者的電腦當(dāng)然是可以運(yùn)行這個(gè)QT程序的,但是想要這個(gè)QT程序在其它同事的

    2024年02月12日
    瀏覽(842)
  • Qt 實(shí)現(xiàn)應(yīng)用程序單實(shí)例

    目前使 Qt 運(yùn)行一個(gè)實(shí)例有如下幾種方式: 1.QSharedMemory 使用共享內(nèi)存,當(dāng)?shù)诙€(gè)進(jìn)程啟動(dòng)時(shí),判斷內(nèi)存區(qū)數(shù)據(jù)是否建立,如有,則退出;這種方式有弊端,在程序發(fā)生崩潰時(shí),未及時(shí)清除共享區(qū)數(shù)據(jù),導(dǎo)致程序不能正常啟動(dòng)。 2.文件鎖 在程序運(yùn)行的時(shí)候就在目錄下創(chuàng)建一個(gè)文

    2024年02月10日
    瀏覽(24)
  • 《Qt開(kāi)發(fā)》MDI應(yīng)用程序

    《Qt開(kāi)發(fā)》MDI應(yīng)用程序

    實(shí)現(xiàn)多個(gè)子窗體的自定義布局(自定義子窗體尺寸和位置)、平鋪布局(titleSubWindows)和分頁(yè)模式(QMdi::TabbedView)。 運(yùn)行效果圖 初始布局(自定義布局) 平鋪布局 多頁(yè)模式 實(shí)現(xiàn)過(guò)程 1. 創(chuàng)建項(xiàng)目MdiFirstDemo,并創(chuàng)建3個(gè)子窗體,分別為FirstSubWindow、SecondSubWindow和ThirdSubWindow。

    2024年01月16日
    瀏覽(85)
  • Qt應(yīng)用程序中的 QApplication

    QApplication類是一個(gè)Qt框架中核心的應(yīng)用程序類,它提供了管理應(yīng)用程序的框架、事件循環(huán)和系統(tǒng)級(jí)配置的基礎(chǔ)。在本文中,我們將詳細(xì)介紹QApplication類的功能和應(yīng)用場(chǎng)景。 通常,我們?cè)谥骱瘮?shù)中創(chuàng)建 QApplication 對(duì)象。在創(chuàng)建時(shí),我們可以指定一些命令行選項(xiàng)和特定于平臺(tái)的參

    2024年02月15日
    瀏覽(23)
  • 「Qt中文教程指南」如何創(chuàng)建基于Qt Widget的應(yīng)用程序(四)

    「Qt中文教程指南」如何創(chuàng)建基于Qt Widget的應(yīng)用程序(四)

    Qt?是目前最先進(jìn)、最完整的跨平臺(tái)C++開(kāi)發(fā)工具。它不僅完全實(shí)現(xiàn)了一次編寫,所有平臺(tái)無(wú)差別運(yùn)行,更提供了幾乎所有開(kāi)發(fā)過(guò)程中需要用到的工具。如今,Qt已被運(yùn)用于超過(guò)70個(gè)行業(yè)、數(shù)千家企業(yè),支持?jǐn)?shù)百萬(wàn)設(shè)備及應(yīng)用。 本文描述了如何使用Qt Creator創(chuàng)建一個(gè)小的Qt應(yīng)用程序

    2024年02月06日
    瀏覽(11)
  • Qt Linux 環(huán)境中應(yīng)用程序打包

    Qt Linux 環(huán)境中應(yīng)用程序打包

    系統(tǒng)環(huán)境:Ubuntu20.04LTS 開(kāi)發(fā)環(huán)境:Qt5.14.1 在進(jìn)入程序部署打包之前,閱讀官方的部署文檔Deploy,通常情況下,我們?cè)陂_(kāi)發(fā)的時(shí)候,Qt Creator 的左下角構(gòu)建模式為Debug,便于我們調(diào)試編寫程序。Qt的三個(gè)構(gòu)建模式Debug、Profile、Release的區(qū)別是: debug可以調(diào)試程序,而release不可以。在

    2024年02月01日
    瀏覽(88)
  • 基于Qt HTTP應(yīng)用程序項(xiàng)目案例

    main函數(shù)創(chuàng)建對(duì)象空間,確認(rèn)窗口的大小和坐標(biāo)。

    2024年02月07日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包