设计模式——MVC模式

使用QT,新建Qml(qt quick)工程。

main.qml如下:

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5

Window {
    visible: true
    width: 300
    height: 300
    title: qsTr("Hello World")

    ListModel { // Model
        id : listModel
        ListElement { name : "Blue" }
        ListElement { name : "Red" }
        ListElement { name : "Green" }
    }
    ComboBox { // View
        id : comboBox
        anchors.centerIn: parent
        model: listModel
        onCurrentTextChanged: {
            dispText()
        }
    }

    function dispText() { // Controller
        console.log(comboBox.currentText)
    }
}

main.cpp如下:

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[]) {
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    const QUrl url(QStringLiteral("qrc:/main.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();
}

运行结果如下:

说明:Qml自带的MVC模式,由ListModel做为model,控件ComBoBox做为View(也可以使用其它可视化控件),js做为controller。model也就是数据,这里将数据、显示、控制分离开,实现解耦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值