QT6.5+qt-quick学习笔记

为什么用QML

  • QML是一种声明式语言,这意味着开发者只需要描述用户界面的外观和行为,而不需要关心具体的实现细节。

  • 这种方式减少了代码量,使得界面设计更加直观和高效。

  • QML提供了丰富的UI组件和动画效果,开发者可以快速创建出现代化、用户友好的应用程序

  • QML基于JavaScript并且与JavaScript的结合使得创建交互式和动画效果变得简单且高效。

  • 开发以Debug方式可以按步运行,调试;release执行效率高,如果动画多可以使用。

安装->创建工程->界面

QT6.5+qt-quick学习笔记_第1张图片

和教程不一样少了build directory /other locations,而且我在创建工程的时候没有选qmake还是cmake这选项

CMakeLists.txt.user,上传和分享该工程时,需要删除改文件

QT-quick

main.cpp
`#include 
#include 
#include 
​
int main(int argc, char *argv[])
{
    //配置环境变量
    qputenv("QT_SCALE_FACTOR",QByteArray("1.0"));//设置全局缩放
    qputenv("QT_ENABLE_HIGHDPI_SCALING","0");//取消操作系统DPI缩放
    QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);//强制使用OpenGL渲染

上述配置需要我们自己配置

  1. 设置全局缩放:

    qputenv("QT_SCALE_FACTOR", QByteArray("1.0"));

    这行代码使用qputenv函数设置环境变量QT_SCALE_FACTOR的值为1.0。这个环境变量用于全局缩放Qt应用程序的用户界面。将其设置为1.0意味着应用程序不会应用任何缩放,保持原始的UI尺寸。这对于在不同分辨率或DPI设置的屏幕上保持UI一致性非常有用。

  2. 取消操作系统DPI缩放:

    qputenv("QT_ENABLE_HIGHDPI_SCALING", "0");

    这行代码通过qputenv函数设置环境变量QT_ENABLE_HIGHDPI_SCALING的值为0。这个环境变量用于控制Qt是否启用操作系统的高DPI缩放功能。将其设置为0将禁用此功能,这意味着Qt应用程序不会根据操作系统的DPI设置自动调整其UI元素的尺寸。

  3. 强制使用OpenGL渲染:

    QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL);

    这行代码使用QQuickWindow类的setGraphicsApi静态方法,强制Qt Quick场景使用OpenGL渲染API。QSGRendererInterface::OpenGL是Qt Scene Graph渲染接口的一个枚举值,指定使用OpenGL进行渲染。这对于需要确保应用程序在特定硬件或驱动上性能最佳化的场景很有用。

注意事项:

  • 使用qputenv设置环境变量通常需要在应用程序的初始化阶段进行,以确保这些设置能够影响整个应用程序的生命周期。

  • 强制使用OpenGL渲染可能会影响应用程序在不同平台上的兼容性,因为并非所有平台都支持或优化OpenGL。因此,在决定使用OpenGL之前,应考虑到目标平台的硬件和驱动支持情况。

  • 在配置这些设置时,应确保它们符合应用程序的需求和目标用户的硬件环境。

QGuiApplication app(argc, argv);
​
QQmlApplicationEngine engine;
QObject::connect(
    &engine,
    &QQmlApplicationEngine::objectCreationFailed,
    &app,
    []() { QCoreApplication::exit(-1); },
    Qt::QueuedConnection);
engine.loadFromModule("untitled", "Main");
​
return app.exec();

这些是自动生成的

}`

QT引用资源文件和代码文件
一、添加资源文件
  1. 创建资源文件

    • 资源文件通常具有.qrc扩展名,并包含对图像、样式表(CSS)、音频等资源的引用。

    • 在Qt Creator中,可以通过右键点击项目并选择“Add New” -> “Qt” -> “Qt Resource File”来创建新的资源文件。

  2. 编辑资源文件

    • 打开.qrc文件,在Qt Creator的“资源编辑器”中添加所需的资源文件(如图片、CSS文件等)。

    • 为资源文件设置适当的路径和前缀,以便在代码中引用。

  3. 在CMakeLists.txt中配置资源文件

    • 使用qt6_add_resources命令将资源文件添加到CMake项目中。

    • 例如:

      qt6_add_resources(RESOURCE_FILES  
          images.qrc  
          fonts.qrc  
          styles.qrc  
      )  
      add_executable(myapp main.cpp ${RESOURCE_FILES})
    • 这将确保资源文件被正确编译并链接到最终的可执行文件中。

  4. 在代码中引用资源

    • 使用:前缀和资源文件中的路径来引用资源。

    • 例如,如果资源文件中有一个名为image.png的图片,并且其前缀为/images,则可以使用QUrl(":/images/image.png")来引用它。

二、添加代码文件
  1. 创建代码文件

    • 在项目目录中创建新的C++源文件(.cpp)和头文件(.h)。

  2. 在CMakeLists.txt中添加源文件

    • 使用add_executabletarget_sources命令将新的源文件添加到CMake项目中。

    • 例如,如果创建了一个名为

      mainwindow.cpp

      的源文件,可以将其添加到可执行文件中:

      cmake复制代码
      ​
      add_executable(myapp main.cpp mainwindow.cpp ${RESOURCE_FILES})
    • 或者,如果先创建了目标,然后再添加源文件,可以使用

      target_sources
      add_executable(myapp main.cpp)  
      target_sources(myapp PRIVATE mainwindow.cpp)
  3. 在代码中引用其他文件和资源

    • 在C++源文件中,使用#include指令来引用头文件。

    • 使用Qt的API来加载和使用资源,如前面提到的使用:前缀和资源路径来引用资源文件。

  4. 编译和运行

    • 使用CMake和相应的构建工具(如Make、Ninja或Visual Studio)来编译项目。

    • 运行生成的可执行文件以查看结果。

注意事项

在QT Creator中,可以通过点击“构建”菜单下的“构建项目”选项,或者使用快捷键Ctrl+B来触发构建过程。

运行(Run)

运行是指执行已经构建好的可执行文件的过程。在QT中,运行之前通常会先检查构建是否成功,并确保生成的可执行文件是最新的。然后,QT会调用操作系统的执行功能来运行这个可执行文件。

运行过程包括以下几个主要步骤:

在QT Creator中,可以通过点击工具栏上的“运行”按钮,或者使用快捷键Ctrl+R来触发运行过程。

区别总结

综上所述,构建和运行是QT项目开发中不可或缺的两个步骤,它们各自承担着不同的任务和功能,共同支持着项目的开发和调试过程。

  • 确保资源文件和代码文件的路径在CMakeLists.txt中正确配置。

  • 如果资源文件或代码文件位于子目录中,请确保在CMakeLists.txt中使用相对路径或绝对路径正确引用它们。

  • 在Qt Quick应用中,通常会在QML文件中引用资源,因此还需要确保QML文件能够正确找到和加载资源。这可以通过在QML文件中使用file://协议来引用本地文件,或者使用Qt的资源系统来引用.qrc文件中的资源。

  • 在QT6.5中,构建(Build)和运行(Run)是两个不同的过程,它们各自承担着不同的任务和功能。

    构建(Build)

    构建是QT项目开发中的一个关键步骤,它主要涉及到将源代码编译成可执行文件的过程。在QT中,构建可以是增量编译(增量编译前需要重新构建一下,不然可能运行的不是修改后的程序,是修改前的程序,当用c/c++修改后的代码也要重新构建),即只编译有变化的部分,以提高开发效率。当进行构建时,QT会根据项目文件(.pro文件)和当前的构建套件(Kit)配置,生成适当的Makefile文件(或其他构建系统文件),然后调用编译器和链接器将源代码编译成可执行文件。

    构建过程包括以下几个主要阶段:

  • 预处理:处理源代码中的宏定义、条件编译等指令。
  • 编译:将源代码转换成目标文件(.obj或.o文件)。
  • 链接:将目标文件、库文件等链接成最终的可执行文件。
  • 加载可执行文件:将可执行文件加载到内存中。
  • 初始化:执行可执行文件的初始化代码,如全局变量的初始化、静态对象的构造等。
  • 执行主函数:调用可执行文件的主函数(main函数),开始执行程序的主要逻辑。
  • 任务不同:构建是将源代码编译成可执行文件的过程,而运行是执行已经构建好的可执行文件的过程。
  • 依赖关系:运行之前必须先进行构建,确保有可执行文件可供执行。
  • 输出不同:构建的输出是编译生成的可执行文件和其他相关文件(如库文件、中间文件等),而运行的输出是程序执行的结果(如输出到控制台的信息、修改的文件等)。

你可能感兴趣的:(学习)