翻譯|使用教程|編輯:鮑佳佳|2020-09-15 10:11:03.180|閱讀 289 次
概述:應(yīng)用程序管理器被編譯為一個(gè)獨(dú)立的可執(zhí)行文件,可以通過基于YAML的配置文件系統(tǒng)和啟動(dòng)插件在很大程度上進(jìn)行配置。但是,如果您需要對(duì)應(yīng)用程序的啟動(dòng)行為進(jìn)行更多控制,則可能有必要實(shí)現(xiàn)自定義應(yīng)用程序管理器可執(zhí)行文件。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Qt(發(fā)音為“ cute”,而不是“ cu-tee”)是一個(gè)跨平臺(tái)框架,通常用作圖形工具包,它不僅創(chuàng)建CLI應(yīng)用程序中也非常有用。而且它也可以在三種主要的臺(tái)式機(jī)操作系統(tǒng)以及移動(dòng)操作系統(tǒng)(如Symbian,Nokia Belle,Meego Harmattan,MeeGo或BB10)以及嵌入式設(shè)備,Android(Necessitas)和iOS的端口上運(yùn)行?,F(xiàn)在我們?yōu)槟闾峁┝嗣赓M(fèi)的試用版。趕快點(diǎn)擊下載Qt最新試用版吧>>
實(shí)施自定義應(yīng)用程序管理器示例提供定制應(yīng)用程序管理器可執(zhí)行文件的基本結(jié)構(gòu)和起點(diǎn)。
介紹
應(yīng)用程序管理器被編譯為一個(gè)獨(dú)立的可執(zhí)行文件,可以通過基于YAML的配置文件系統(tǒng)和啟動(dòng)插件在很大程度上進(jìn)行配置。但是,如果您需要對(duì)應(yīng)用程序的啟動(dòng)行為進(jìn)行更多控制,則可能有必要實(shí)現(xiàn)自定義應(yīng)用程序管理器可執(zhí)行文件。
注意:目前,應(yīng)用程序管理器模塊中的所有C ++類都被視為私有API,因此根本沒有兼容性保證。
如果仍然需要此行為,則此示例提供了一個(gè)起點(diǎn),您可以在此基礎(chǔ)上構(gòu)建自定義實(shí)現(xiàn)。請(qǐng)記住,此自定義應(yīng)用程序管理器可執(zhí)行文件需要系統(tǒng)UI才能在屏幕上顯示某些內(nèi)容,就像標(biāo)準(zhǔn)appman可執(zhí)行文件一樣。
以下是必需的代碼的細(xì)分:
#include#include #include #include #include #include QT_USE_NAMESPACE_AM
應(yīng)用程序管理器分為功能性構(gòu)建塊。這些include語句引入了所需的基本類集。為了避免與QML插件發(fā)生沖突,所有應(yīng)用程序管理器的符號(hào)都命名為名稱空間- QT_USE_NAMESPACE_AM擴(kuò)展為等效using語句。
QCoreApplication::setApplicationName(qSL("Custom Application Manager")); QCoreApplication::setApplicationVersion(qSL("0.1"));
通常我們會(huì)選擇設(shè)置應(yīng)用程序名稱和版本。
Logging::initialize(argc, argv);
我們希望應(yīng)用程序管理器的日志記錄部分盡早初始化,尤其是在處理DLT日志記錄時(shí)。
Sudo::forkServer(Sudo::DropPrivilegesPermanently);
同樣,僅對(duì)于安裝程序部分,在運(yùn)行QApplication構(gòu)造函數(shù)之前,需要執(zhí)行附加的設(shè)置步驟:如果可執(zhí)行文件為setuid-root,則此調(diào)用將fork關(guān)閉子進(jìn)程,該子進(jìn)程將保留root特權(quán),而主進(jìn)程將永久刪除它們。
try { Main a(argc, argv); Configuration cfg; cfg.parse(); a.setup(&cfg); a.loadQml(cfg(cfg.loadDummyData());()); a.showWindow(cfg(cfg.fullscreen() () && !cfg.noFullscreen());()); return MainBaseMainBase::exec();(); } } catch ((const std::exception &e) {) { qCCritical(LogSystem) (LogSystem) << "ERROR:" << e.what(); (); return 2; }}
try模塊塊是定制應(yīng)用程序管理器的核心。您需要?jiǎng)?chuàng)建一個(gè)Main對(duì)象,該對(duì)象是從QGuiApplication派生的類,再加上一個(gè)合適的配置對(duì)象。在這種簡單情況下,我們使用應(yīng)用程序管理器的默認(rèn)YAML解析,因此我們實(shí)例化了一個(gè)DefaultConfiguration對(duì)象。該功能的其余部分涉及解析配置,然后在Main對(duì)象上調(diào)用相關(guān)的設(shè)置例程。
根據(jù)您的應(yīng)用程序管理器的配置,Main對(duì)象的派生方式可以不同:無頭,帶小部件或標(biāo)準(zhǔn),因此,您需要知道exec()調(diào)用的正確基類。但是,MainBasetypedef可以解決此問題。
應(yīng)用程序管理器中的大多數(shù)功能都能拋出除非std::exception異常,因此catch處理程序是強(qiáng)制性的。
本篇文章中的內(nèi)容你都學(xué)會(huì)了嗎?如果這篇文章沒能滿足你的需求、點(diǎn)擊獲取更多文章教程!現(xiàn)在立刻下載Qt免費(fèi)試用吧!更多Qt類開發(fā)工具QtitanRibbon、QtitanChart、QtitanNavigation、QtitanDocking、QtitanDataGrid在線訂購現(xiàn)直降1000元,歡迎咨詢慧都獲取更多優(yōu)惠>>
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: