Clion配置qt6开发环境

859 阅读1分钟

新建工程, 选择Qt Widgets Executable类型, 配置Qt Cmake前缀路径.

1.png

项目初始目录结构

1.png

新建Qt UI Class, 名为MyWidget.

1.png

生成的mywidget.cpp文件会编译不过, 需要将大写的ui_MyWidget.h改为ui_mywidget.h, 然后重新编译.

1.png

main.cpp使用自己创建的MyWidget组件.

#include <QApplication>
#include "mywidget.h"

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    MyWidget w;
    w.show();
    return QApplication::exec();
}

添加资源文件res.qrc,拷贝图片资源到项目中.

<RCC>
    <qresource prefix="/img">
        <file>images/11.png</file>
        <file>images/22.png</file>
    </qresource>
</RCC>

CMakeLists.txt添加资源文件

add_executable(QtHelloWorld main.cpp
        mywidget.cpp
        mywidget.h
        mywidget.ui
        res.qrc
)

使用资源文件

MyWidget::MyWidget(QWidget *parent) :
        QWidget(parent), ui(new Ui::MyWidget) {
    ui->setupUi(this);
    ui->label->setPixmap(QPixmap(":/img/images/11.png").scaled(80,80));
    connect(ui->pushButton, &QPushButton::clicked, [=](){
        ui->label->setPixmap(QPixmap(":/img/images/22.png").scaled(80,80));
    });
}

编译运行项目

1.png

开发QML

CMakeLists.txt添加Quick模块

cmake_minimum_required(VERSION 3.28)
project(QmlTest)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

set(CMAKE_PREFIX_PATH "/home/wlzhou/Qt/6.5.3/gcc_64")

find_package(Qt6 COMPONENTS
        Core
        Gui
        Widgets
        Quick
        REQUIRED)

add_executable(QmlTest main.cpp)
target_link_libraries(QmlTest
        Qt::Core
        Qt::Gui
        Qt::Widgets
        Qt::Quick
)

同级目录下创建main.qml文件

import QtQuick

Window {
    width: 300
    height: 300
    visible: true
    color: 'green'
}

修改main.cpp文件

#include <QApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("../main.qml"))); //纯路径加载qml文件
    return QApplication::exec();
}

qml项目运行效果

1.png

使用 qt_add_qml_module

qt_standard_project_setup(REQUIRES 6)

qt_add_qml_module(QmlTest
        URI myUri
        VERSION 1.0
        QML_FILES
            Main.qml //qml文件名必须大写
)

main.cpp 中加载 qml 文件

#include <QApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QQmlApplicationEngine engine;
    engine.loadFromModule("myUri", "Main");
    return QApplication::exec();
}

使用资源文件路径加载qml文件

resources.qrc

<!DOCTYPE RCC>
<RCC version="1.0">
    <qresource prefix="/qt/qml">
        <file>main.qml</file>
    </qresource>
</RCC>

CMakeLists.txt加入资源文件

add_executable(untitled main.cpp resources.qrc)

main.cpp

#include <QApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/qt/qml/main.qml")));
    return QApplication::exec();
}

运行效果

1.png