Qt5 - c++嵌入qml示例

本文介绍如何使用Qt5与Visual Studio 2008进行编译,包含.pro文件配置、源文件main.cpp及.qml文件的示例代码。通过简单的Qt5应用程序示例,展示了如何创建和运行一个包含QML界面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


.pro
+++++++++++++++++++++++++++++++++++++++++++++
#-------------------------------------------------
#
# Project created by QtCreator 2012-03-15T09:57:33
#
#-------------------------------------------------
 
 
QT       += declarative  quick
 
 
TARGET = Qt5Test
TEMPLATE = app
 
 
 
 
SOURCES += main.cpp
 
 
 
 
OTHER_FILES += test.qml
 
 
main.cpp
+++++++++++++++++++++++++++++++++++++++++++++++++++
#include <QQuickView>
#include <QGuiApplication>
#include <QDeclarativeEngine>
#include <QObject>
Q_DECL_EXPORT int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv, 5);
    QQuickView viewer;
    QObject::connect(viewer.engine(), SIGNAL(quit()), QCoreApplication::instance(), SLOT(quit()));
    viewer.setSource(QUrl::fromLocalFile("test.qml"));
    viewer.show();
    return app.exec();
}
 
 
.qml
+++++++++++++++++++++++++++++++++++++++++++++++++++++
import QtQuick 2.0
Rectangle {
    width: 640
    height: 480
    Text  {
        anchors.centerIn: parent
        text: qsTr("\u6211\u662f\u4e2d\u6587Hello Qt")
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}
 
参考:
http://qt-project.org/forums/%20/viewthread/13857
http://qt-project.org/forums/viewthread/6907
### QML 中 `ProgressBar` 的使用方法 #### 基本结构与属性配置 在 QML 中,`ProgressBar` 是用于展示任务完成进度的组件。可以通过设置不同的属性来自定义其外观和行为。 ```qml import QtQuick 2.14 import QtQuick.Window 2.14 import QtQuick.Controls 2.14 Window { width: 640 height: 480 visible: true title: qsTr("Progress Bar Example") ProgressBar { anchors.centerIn: parent from: 0 to: 100 value: 50 // 设置当前进度值 background: Rectangle { // 自定义背景样式 color: "#f0f0f0" border.color: "#d3d3d3" radius: 5 } contentItem: Rectangle { // 定义填充部分的颜色及形状 color: "skyblue" radius: 5 } } } ``` 此代码片段展示了如何创建并初始化一个简单的 `ProgressBar` 实例[^1]。 #### 不同状态下的表现形式 对于不确定模式下(即无法预估具体完成时间的任务),可以启用 `indeterminate` 属性: ```qml ProgressBar { y: 100 indeterminate: true // 启用不确定模式 } ``` 当该属性被设为 `true` 时,进度条不再表示具体的百分比而是通过动画提示用户有后台任务正在执行中[^2]。 #### 显示进度数值 为了让用户体验更加友好,在某些场景下可能还需要直接显示出当前的具体进度比例或数值。这可以通过绑定文本元素到 `value` 来实现: ```qml Text { text: Math.round(progressBar.value * 100) + "%" font.bold: true anchors.horizontalCenter: progressBar.horizontalCenter } // 或者利用 Label 控件配合 Binding 表达式简化写法 Label { text: `${Math.floor(progressBar.value * 100)}%` horizontalAlignment: HorizontalAlignment.Center } ``` 这里假设有一个名为 `progressBar` 的变量指向对应的 `ProgressBar` 对象实例[^4]。 #### 高级定制化设计 除了上述基础功能外,开发者也可以深入挖掘更多可能性,比如更改整体风格、增加额外视觉特效等。需要注意的是,随着版本迭代,旧版中的某些特性可能会有所变化甚至移除;因此建议查阅官方文档获取最新指导信息[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值