QGC源码分析——UI界面的启动流程(从mian.cc到五大视图)

1. QGC中UI的启动,从main.cc起

//src\main.cc:427
int main(int argc, char *argv[]) {
	...
	app->_initForNormalAppBoot()) 
	...
}

2. 初始化应用程序 _initForNormalAppBoot

//src\QGCApplication.cc:550
bool QGCApplication::_initForNormalAppBoot() {
	...
	_qmlAppEngine = toolbox()->corePlugin()->createRootWindow(this);
}

3. 创建根目录 createRootWindow

//src\api\QGCCorePlugin.cc:479
QQmlApplicationEngine* QGCCorePlugin::createRootWindow(QObject *parent)
{
    QQmlApplicationEngine* pEngine = new QQmlApplicationEngine(parent);
    
    //QQmlEngine中方法:  添加qml文件目录
    pEngine->addImportPath("qrc:/qml");
    
    //注册了一个名为“joystickManager”的 QML上下文的全局可见属性, 能在QML中调用(QML调用C++的一种形式)
    pEngine->rootContext()->setContextProperty("joystickManager", qgcApp()->toolbox()->joystickManager());
    
    //注册了一个名为“debugMessageModel”的 QML上下文的全局可见属性, 能在QML中调用(QML调用C++的一种形式)
    pEngine->rootContext()->setContextProperty("debugMessageModel", AppMessages::getModel());
    
    //加载url的QML根文件,立即创建了由本地文件urls定义的对象树。此为UI显示的根目录
    pEngine->load(QUrl(QStringLiteral("qrc:/qml/MainRootWindow.qml")));
    
    return pEngine;
}

这个类结合了QQmlEngineQQmlComponent来提供一种加载单独的QML文件的方法。它还向QML提供了应用程序功能,这些功能通常由c++ /QML混合应用程序控制。官方实例如下:

  #include <QGuiApplication>
  #include <QQmlApplicationEngine>

  int main(int argc, char *argv[])
  {
      QGuiApplication app(argc, argv);
      QQmlApplicationEngine engine("main.qml");
      return app.exec();
  }

需要我们自建一个根窗口的qml,其中一般需包含Window或ApplicationWindow。

在上述“createRootWindow”的 第七行中: pEngine->addImportPath(“qrc:/qml”); 此处是添加qmldir的目录路径,qgroundControl.qrc 中的如下:
在这里插入图片描述
4. ApplicationWindow 中根目录的启动到五大界面的加载

//src\ui\MainRootWindow.qml:40
ApplicationWindow {
    id:             mainWindow
    
   	//飞行视图
	function showFlyView() {
	...
	
	//规划视图
    function showPlanView() {
 	...

	//分析视图
    function showAnalyzeView() {
    ...

	//飞行设置视图
    function showSetupView() {
    ...

	//应用设置
    function showSettingsView() {
    ...
}

        QGC 会保存上一次的长宽比 ,并默认进入的showFlyView,用户可以通过菜单栏下方的五个按钮实现不同页面的切换, MainToolBar.qml 实现了五大按钮的横向布局,并监听鼠标的点击 onClicked 事件,发射出相应的信号,在MainWindowInner.qml 中对相应的信号处理,加载不同的页面。之后再单独分析QML的根文件。

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Qt QGC 4.2 是一个图形用户界面开发框架,用于创建功能丰富且可自定义的应用程序。要修改Qt QGC 4.2界面,你可以按照以下步骤进行: 1. 打开Qt QGC 4.2代码。可以通过Git克隆Qt QGC 4.2的存储库,或者从官方网站上下载代码。 2. 找到需要修改的界面文件。Qt QGC 4.2使用Qt Quick作为默认的用户界面技术,所以界面文件通常以.qml文件的形式存在。根据你想要修改的部分,找到对应的.qml文件。 3. 使用Qt Creator打开.qml文件。Qt Creator是Qt官方提供的一个集成开发环境,用于图形界面和应用程序的开发。 4. 在.qml文件中进行修改。根据你的需求,可以通过修改.qml文件来改变界面的布局、颜色、字体等。你可以修改元素的属性值、添加新的元素、删除不需要的元素等。 5. 保存修改并重新编译应用程序。在完成界面修改后,保存.qml文件并重新编译应用程序。使用Qt Creator的构建功能可以方便地进行编译和构建应用程序。 6. 运行应用程序并测试修改。启动应用程序并测试修改后的界面。确保修改的界面符合预期,并且没有引入任何问题或错误。 总结,要修改Qt QGC 4.2界面,你需要找到.qml文件并使用Qt Creator进行修改。通过修改.qml文件中的属性和元素,可以改变界面的外观和行为。完成修改后,重新编译和运行应用程序,以确保修改的界面能够正常工作。希望这个回答对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值