Qt: 使用QML来创建界面

在Qt编程中,我们可以使用纯C++代码,或C++和XML结合的方式来创建GUI程序。

下面我介绍一下如何在Qt Creater中用QML创建GUI程序。


首先打开Qt Creater,选择“Qt Quick Application”:



然后选择Qt Quick Component Set的版本,注意此处的版本要和程序中导入的版本一致。



新建完成后,显示的界面如下:



与 Widgets 工程相比,Quick Control 多出了几个文件:

  • main.qml 是 QML 文件,它的后缀就是.qml。qml.qrc 是资源文件,主要包含了 QML 文件的路径,以确保 QML 引擎能够找到文件。
  • deployment.pri 是工程文件 QuickControlsDemo.pro 的辅助文件。



切换到设计模式,就可以从左侧的面板中看到 QML 的基本元素、控件、布局等,这些都可以拖拽到中间的编辑区。


main.qml 是可以编辑的,打开 main.qml,将下面的代码复制进去:

import QtQuick 2.3
import QtQuick.Controls 1.2

ApplicationWindow {
    visible: true
    width: 400
    height: 210
    color: "#ffffff"
    title: qsTr("QuickControlsDemo")

    Text {
        id: text1
        x: 47
        y: 35
        width: 80
        height: 30
        text: qsTr("用户名:")
        horizontalAlignment: Text.AlignRight
        verticalAlignment: Text.AlignVCenter
        font.pixelSize: 14
    }

    TextField {
        id: textField1
        x: 137
        y: 35
        width: 200
        height: 30
        placeholderText: qsTr("请输入用户名")
    }

    Text {
        id: text2
        x: 47
        y: 85
        width: 80
        height: 30
        text: qsTr("密  码:")
        verticalAlignment: Text.AlignVCenter
        font.pixelSize: 14
        horizontalAlignment: Text.AlignRight
    }

    TextField {
        id: textField2
        x: 137
        y: 85
        width: 200
        height: 30
        echoMode: 2
        placeholderText: qsTr("请输入密码")
    }

    Button {
        id: button1
        x: 71
        y: 145
        width: 116
        height: 36
        text: qsTr("登 录")
    }

    Button {
        id: button2
        x: 224
        y: 145
        width: 110
        height: 36
        text: qsTr("取 消")
    }
}


效果如下:


再切换到设计模式,就可以看到一个简单的登录框。运行一下就可以看到效果:


当然你也可以运行,效果如下:



读者可以好好研究一下QML文件,了解其基本语法和格式。

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Qt中,你可以使用Controller类来管理界面的切换,包括QML界面和QMainWindow界面。下面是一个示例代码,展示了如何在Qt使用Controller类来实现界面切换: ```cpp // controller.h #ifndef CONTROLLER_H #define CONTROLLER_H #include <QObject> #include <QQuickView> #include <QMainWindow> class Controller : public QObject { Q_OBJECT public: explicit Controller(QObject *parent = nullptr); void showQMLView(); void showMainWindow(); private: QQuickView *qmlView; QMainWindow *mainWindow; }; #endif // CONTROLLER_H ``` ```cpp // controller.cpp #include "controller.h" Controller::Controller(QObject *parent) : QObject(parent) { qmlView = nullptr; mainWindow = nullptr; } void Controller::showQMLView() { // 隐藏主窗口 if (mainWindow) { mainWindow->hide(); } // 创建QML视图并加载QML文件 if (!qmlView) { qmlView = new QQuickView(); qmlView->setSource(QUrl("qrc:/main.qml")); } // 显示QML视图 qmlView->show(); } void Controller::showMainWindow() { // 隐藏QML视图 if (qmlView) { qmlView->hide(); } // 创建主窗口并显示 if (!mainWindow) { mainWindow = new QMainWindow(); // 添加需要显示的控件和布局 // ... } mainWindow->show(); } ``` 在上述代码中,Controller类包含了showQMLView()和showMainWindow()两个公共方法,用于切换显示QML界面和QMainWindow界面。在切换界面时,会根据需要创建和显示对应的视图。 需要注意的是,QML界面需要在一个QQuickView对象中加载和显示,而QMainWindow界面则需要创建一个QMainWindow对象并添加需要的控件和布局。在切换界面时,先隐藏当前显示的界面,然后创建或显示目标界面。 你可以在自己的应用程序中使用Controller类来管理界面的切换。根据实际需求,你可以在Controller类中添加其他方法和属性来满足业务逻辑的要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值