【QtQuick3D学习】使用Qt Design Studio设计UI并导入Qt Creator项目中使用——基于C++和Cmake

使用Qt Design Studio设计UI并导入Qt Creator项目中使用——基于C++和Cmake

新版本中项目文件全部放在了一起,见

这里测试前后端分离,即使用Qt Design Studio设计前端和交互逻辑,C++写后端,处理数据

项目创建

1. Qt Creator

按照【QtQuick3D学习】使用Qt Creator创建Qt Quick项目测试运行——基于C++和Cmake创建项目,得到基本项目框架,或者使用之前创建好的项目

这里使用新创建的项目

在这里插入图片描述

2. Qt Design Studio

按照【QtQuick3D学习】使用Qt Design Studio创建项目并使用Qt Creator打开测试运行——基于C++和Cmake创建项目,得到基本项目框架,或者使用之前创建好的项目

这里使用之前创建的项目

文件导入

这里要将Qt Design Studio项目中的部分文件导入到Qt Creator项目中使用

文件复制

将Qt Design Studio项目DesignTest文件夹中的前三个文件夹复制到Qt Creator项目
cImportDesign中的qml文件夹(ps:需要先创建该文件夹)内

在这里插入图片描述

得到如下的文件结构

│  CMakeLists.txt
│  CMakeLists.txt.user
│  main.cpp
│  main.qml
│  qml.qrc
│
└─qml
    ├─asset_imports
    │      asset_imports.txt
    │
    ├─content
    │  │  App.qml
    │  │  CMakeLists.txt
    │  │  Screen01.ui.qml
    │  │
    │  └─fonts
    │          fonts.txt
    │
    └─imports
        │  CMakeLists.txt
        │
        └─DesignTest
            │  CMakeLists.txt
            │  Constants.qml
            │  DirectoryFontLoader.qml
            │  EventListModel.qml
            │  EventListSimulator.qml
            │  qmldir
            │
            └─designer
                    plugin.metainfo

qrc管理

在Qt Creator项目选择qml.qrc,右键选择添加现有文件夹

在这里插入图片描述

勾选qml文件夹

在这里插入图片描述

成功添加后可以在项目结构中看到增加的文件

在这里插入图片描述

代码修改

此时直接构建运行,还是原来的窗口,所以需要更改代码

找到main.cpp文件,将13行修改为下面的内容

    const QUrl url(QStringLiteral("qrc:/qml/content/App.qml"));

或者直接复制下面的代码替换

#include <QGuiApplication>
#include <QQmlApplicationEngine>


int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
//    const QUrl url(QStringLiteral("qrc:/main.qml"));
    const QUrl url(QStringLiteral("qrc:/qml/content/App.qml"));
    QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
        &app, [url](QObject *obj, const QUrl &objUrl) {
            if (!obj && url == objUrl)
                QCoreApplication::exit(-1);
        }, Qt::QueuedConnection);
    engine.load(url);

    return app.exec();
}

重新构建运行,在应用程序输出窗口得到下面的错误输出

在这里插入图片描述

直接点击蓝色部分跳转到错误处,或者自行打开App.qml文件

将报错处(第5行)修改为下面的内容

import "qrc:/qml/imports/DesignTest"

或者直接复制下面的代码替换

// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

import QtQuick 6.5
import "qrc:/qml/imports/DesignTest"

Window {
    width: mainScreen.width
    height: mainScreen.height

    visible: true
    title: "DesignTest"

    Screen01 {
        id: mainScreen
    }

}


重新构建运行,在应用程序输出窗口得到下面的错误输出

在这里插入图片描述

同上,修改错误处代码为

import "qrc:/qml/imports/DesignTest"

由于Screen01.ui.qml文件的特殊性,会跳转到设计窗口,不用担心

重新构建运行,在应用程序输出窗口得到下面的错误输出

在这里插入图片描述

同样的跳转到错误处,将错误内容注释,根据内容推测,跟字体相关,暂时不用

pragma Singleton
import QtQuick 6.5
//import QtQuick.Studio.Application

QtObject {
    readonly property int width: 640
    readonly property int height: 480

    property string relativeFontDirectory: "fonts"

    /* Edit this comment to add your custom font */
    readonly property font font: Qt.font({
                                             family: Qt.application.font.family,
                                             pixelSize: Qt.application.font.pixelSize
                                         })
    readonly property font largeFont: Qt.font({
                                                  family: Qt.application.font.family,
                                                  pixelSize: Qt.application.font.pixelSize * 1.6
                                              })

    readonly property color backgroundColor: "#c2c2c2"


//    property StudioApplication application: StudioApplication {
//        fontPath: Qt.resolvedUrl("../../content/" + relativeFontDirectory)
//    }
}

运行结果

再次构建运行,得到应用窗口,与此前【QtQuick3D学习】使用Qt Design Studio创建项目并使用Qt Creator打开测试运行——基于C++和Cmake结果一致

在这里插入图片描述

  • 45
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: QMake和CMake都是用于构建C++项目的工具,它们可以帮助开发者自动化地生成Makefile,并且支持跨平台开发。QMake是Qt的默认构建工具,主要用于构建Qt项目CMake则是更通用的构建工具,用于构建各种C++项目。在Qt Creator,用户可以根据自己的需求选择使用QMake或CMake构建自己的项目。 ### 回答2: Qt Creator是一个Qt集成开发环境,它支持使用qmake和CMake两种工具来进行项目的构建。 QMake是Qt自带的构建工具,它能够根据.pro文件所定义的内容自动生成Makefile,从而完成项目的构建。Qt Creator也是基于QMake来进行项目构建的。QMake的优点是,它是Qt的一部分,可以集成于Qt Creator,在使用时不需要安装额外的第三方软件。另外,QMake简单易用,对于简单的Qt项目,可以快速搭建构建环境。 CMake是一个跨平台的构建工具,它可以在多个平台上进行构建,并且可以生成不同平台上所对应的Makefile或者项目文件。与QMake相比,CMake更加灵活,支持在各种环境下使用,并且通过编写CMake脚本,能够自定义构建过程。此外,CMake还支持通过插件机制,与各种不同的IDE平台集成。 对于选择QMake还是CMake来进行Qt项目的开发,需要根据项目的具体情况来进行选择。对于简单的Qt项目,QMake比较适合,因为它简单易用,能够快速搭建构建环境;但是对于需要跨平台构建的大型项目,或者需要结合多种开发环境的项目CMake则更适合。而Qt Creator作为一个综合开发环境,它支持使用QMake或CMake进行项目构建,用户可以根据自己的需求和经验来进行选择。 ### 回答3: Qt Creator 是一个强大的跨平台集成开发环境,广泛用于 Qt 应用程序的设计和开发。Qt Creator 有两个主要的构建工具:qmake 和 CMake。这两个工具在 Qt 的开发都有其重要作用,我们将在以下内容对它们进行比较和解释。 qmake 是一个由 Qt 公司开发的构建系统,可以帮助开发人员轻松管理多平台 Qt 应用程序的构建。它是 Qt 的默认构建系统,并从 Qt 4 开始逐渐普及。通过使用 qmake,开发人员可以轻松地指定项目依赖项和生成构建规则。它还可以通过将插件添加到项目来轻松扩展其功能。不过,由于 qmake 只能用于 Qt 项目,因此在处理非 Qt 项目时会受到一定的限制。此外,qmake 虽然简单易用,但它也缺乏一些对于更复杂项目来说必要的功能。 CMake 是一种跨平台构建系统,它可以支持多种编程语言和不同的构建系统。CMake 的优点在于,它提供了更多的功能和更灵活的构建选项,使得开发人员可以更自由的掌控构建流程。由于 CMake 支持多个构建系统(如 Makefile、Ninja),因此开发人员可以根据项目需求进行选择,使得项目的构建更加高效和灵活。由于 CMake 是一个通用的构建工具,因此它可以被用于不同的项目,无论是 Qt 项目还是非 Qt 项目都可以使用。但是,CMake学习曲线比较陡峭,对于刚接触它的开发人员来说,可能需要更长的时间来学习和理解它的工作原理。 总体来说,qmake 相对于 CMake 来说较为简单易用,但在处理更复杂和大型的项目时,CMake 显得更为高效和灵活,尤其是对于跨平台项目而言。因此,在选择构建工具时,开发人员需要根据项目的规模和特点来进行权衡和选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值