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