Qt - MVC模型/视图编程

2023-11-15

MVC模型/视图编程

Qt中的模型/视图架构用来实现大量的数据存储、处理及显示。

MVC(Model-View-Controller)包括了3个组件:

  • 模型(Model)是应用对象,用来表示数据;
  • 视图(View)是模型的用户界面,用来显示数据;
  • 控制(Controller)定义了用户界面对用户输入的反应方式。委托(Delegate)用于定制数据的渲染和编辑方式。
    在这里插入图片描述

1. 模型

  • 所有的模型都基于QAbstractItemModel类,该类提供了十分灵活的接口来处理各种视图,这些视图可以将数据的表现形式为表格(table)、列表(list)、树(tree)

  • Qt提供了一些现成的模型来处理数据项:

  • QStringListModel 存储简单的QString项目列表;

  • QStandardItemModel管理复杂的属性结构数据项,每一个数据项可以包含任意的数据;

  • QFileSystemModel提供了本地文件系统中文件和目录信息;

  • QSqlQueryModel、QSqlTableModel和QSqlRelationTableModel用来访问数据库。

  • 标准模型还无法满足需要时,可子类化QAbstractItemModel、QAbstractListModel或QAbstractTableModel来创建自定义的模型。

常见的3种模型为列表模型、表格模型、树模型,如下图所示:
在这里插入图片描述

模型索引

  • 为确保数据的表示与数据的获取相分离,Qt引入了模型索引的概念,输入和委托均可通过模型索引来请求数据并显示。只有模型需要知道怎样获取数据,被模型管理的数据类型可以被广泛的定义。模型索引包含一个指针,指向创建他们的模型,使用多个模型时可避免混淆。模型索引QModelIndex类提供对一块数据的临时引用,用来修改或检索模型中的数据,获取一个数据项的模型索引必须指定模型的3个属性:行号、列号和父项的模型索引。
  • 如:QModelIndex index = model->index(row,column,parent);
  • 也可通过模型指定的相关数据项对应的模型索引以及特定的角色来获取需要的类型数据,
  • 如:QVariant value = model->data(index,role);
    常用的角色类型:
常量 描述
Qt::DisplayRole 数据被渲染为文本(数据为QString类型)
Qt::DecorationRole 数据被渲染为图标等装饰(数据为QColor,QIcon,或QPixmap类型)
Qt::EditRole 数据可以在编辑器中进行编辑(数据为QString类型)
Qt::ToolTipRole 数据显示在数据项的工具提示中(数据类型为QString)
Qt::StatusTipRole 数据显示在状态栏中(数据为QString类型)
Qt::WhatsThisRole 数据显示在数据项的“What’s This?”模式下(数据为QString类型)
Qt::SizeHintRole 数据项的大小提示,将会应用到视图(数据为QSize类型)
Qt::FontRole 默认代理的绘制使用的字体
Qt::TextAlignmentRole 默认代理的对齐方式
Qt::BackgroundRole 默认代理的背景画刷
Qt::ForegroundRole 默认代理的前景画刷
Qt::CheckStateRole 默认代理的检查框状态
Qt::UserRole 用户自定义的数据的起始位置
  • 新建名称testModelIndex, 选择空项目, 工程文件中添加 QT += widgets
  • 添加main.cpp文件

 
 

2.视图

  • Qt提供了QListView、QTableView视图、QTreeView视图分别实现列表、表格与树视图效果。
  • QListView将数据项显示为一个列表;
  • QTableView将模型中的数据显示在一个表格中;
  • QTreeView将模型中的数据项显示在具有层次的列表中。
  • QTableView和QTreeView在显示项目的时候同时还可以显示标头,通过QHeaderView类实现。
  • 自定义视图类是基于QAbstractItemView抽象基类,如实现条形图,饼状图等特殊显示方式。

视图类的选择行为

常量 描述
QAbstractView::SelectItems 选择单个项目
QAbstractView::SelectRows 只选择行
QAbstractView::SelectColumns 只选择列

视图类的选择模式

常量 描述
QAbstractItemView::SigleSelection 当用户选择一个项目时,所有已经选择的项目将成为未选择状态,而且用户无法在已经选择的项目上单击来取消选择
QAbstractView::ContiguousSelection 用户单击一个项目的同时,按Shift键,则所有当前项目和单击项目之间的项目都将被选择或取消选择
QAbstractView::ExtendedSelection 具有ContiguousSelection的特性,且可按Ctrl键进行不连续选择
QAbstractView::MultiSelection 用户选择一个项目时不影响其他已经选择的项目
QAbstractView::NoSelection 项目无法被选择

选择模型更新方式

常量 描述
QItemSelectionModel::NoUpdate 不做选择
QItemSelectionModel::Clear 选择被清除
QItemSelectionModel::Select 选择指定索引
QItemSelectionModel::Deselect 取消指定索引的选择
QItemSelectionModel::Toggle 切换指定索引的选择
QItemSelectionModel::Current 当前选择被更新
QItemSelectionModel::Rows 索引扩展为跨行
QItemSelectionModel::Columns 索引扩展为跨列
QItemSelectionModel::SelectCurrent Select Current组合
QItemSelectionModel::ToggleCurrent Toggle Current组合
QItemSelectionModel::ClearAndSelect Clear Select组合

 
 

3. 委托

  • 在模型/视图框架中,QAbstractItemDelegate是委托类的抽象基类,Qt默认的委托实现由QStyledItemDelegate类提供,这也被用作Qt标准视图的默认委托,选择 QStyledItemDelegate或QItemDelegate中其一来为视图中的项目绘制和提供编辑器。
  • 不同的是QStyledItemDelegate使用当前的样式来绘制项目,实现自定义委托建议使用QStyledItemDelegate作为基类。
  • Qt提供了项目试图的便捷类,这些类底层通过模型/视图框架实现。这些部件分别是QListWidget提供一个项目列表,QTreeWidget显示一个多层次的树结构,QTableWidget提供了一个以项目作为单元的表格。它们每一个类都继承了QAbstractItemView类的行为。之所以成为便捷因其用起来比较简单,使用于少量的数据的存储和显示。
  • 因没有将视图与模型分离,所以没有视图类灵活,不能和任意的模型一起使用。

 
 

模型视图使用示例(查询本机文件系统)

  • 新建空项目testModelView,pro文件添加 QT += widgets,并添加main.cpp文件
    main.cpp文件代码:
#include <QApplication>
#include <QAbstractItemModel>       //抽象类模型
#include <QAbstractItemView>        //视图
#include <QItemSelectionModel>      //项选择模型
#include <QDirModel>                //目录模型
#include <QTreeView>                //树视图
#include <QListView>                //列表视图
#include <QTableView>               //表格视图
#include <QSplitter>                //窗口分割

int main(int argc, char*argv[]){
    QApplication app(argc, argv);

    QDirModel model;     	//创建目录模型

    QTreeView tree;     	//创建树视图
    QListView list;     	//创建列表视图
    QTableView table;   	//创建表格视图

    tree.setModel(&model);  //树视图设置模型
    list.setModel(&model);  //列表视图设置模型
    table.setModel(&model); //表格视图设置模型

    //设置视图对象的选择方式为多选
    tree.setSelectionMode(QAbstractItemView::MultiSelection);
    list.setSelectionMode(tree.selectionMode());    //将树的选择方式传给列表
    table.setSelectionMode(tree.selectionMode());   //将树的选择方式传给表格

    //双击树视图后, 发射信号, 列表与表格视图刷新双击树视图的内容
    QObject::connect(&tree, SIGNAL(doubleClicked(QModelIndex)),
                     &list, SLOT(setRootIndex(QModelIndex)));
    QObject::connect(&tree, SIGNAL(doubleClicked(QModelIndex)),
                     &table, SLOT(setRootIndex(QModelIndex)));

    //设置窗口分割
    QSplitter *splitter = new QSplitter;
    splitter->addWidget(&tree);		//添加树模型
    splitter->addWidget(&list);		//添加列表模型
    splitter->addWidget(&table);	//添加表格模型
    splitter->setWindowTitle("模型/视图");	//设置标题
    splitter->show();				//显示窗体

    return app.exec();
}

testModelview运行效果
在这里插入图片描述

 
 

标准模型项操作示例:

  • 新建空项目testQModelIndex,pro文件添加QT+= widgets,并添加main.cpp文件,编辑main.cpp文件代码
#include <QApplication>
#include <QTreeView>
#include <QStandardItemModel>
#include <QDebug>

int main(int argc, char*argv[]){
    QApplication app(argc, argv);

    //创建标准项模型
    QStandardItemModel model;

    //获取标准项模型的根项, 根项是不可见的
    QStandardItem *parentItem = model.invisibleRootItem();

    //创建标准项
    QStandardItem *item_0 = new QStandardItem;
    item_0->setText("A");

    //设置图标
    QPixmap pixmap_0(50,50);    //设置宽和高为50
    pixmap_0.fill(Qt::red);     //设置颜色为红色

    item_0->setIcon(pixmap_0);  //为标准项设置图标
    item_0->setToolTip("A项的提示");  //设置工具提示

    parentItem->appendRow(item_0);
    parentItem = item_0;        //将 item_0 作为父项


    //创建 item_0 的子项
    QStandardItem *item_1 = new QStandardItem;
    item_1->setText("B");

    //设置 item_1 的图标
    QPixmap pixmap_1(50,50);
    pixmap_1.fill(Qt::blue);

    item_1->setIcon(pixmap_1);
    item_1->setToolTip("B项的提示");

    //将子项添加到父项下
    parentItem->appendRow(item_1);

    QStandardItem *item_2 = new QStandardItem;

    QPixmap pixmap_2(50,50);
    pixmap_2.fill(Qt::green);

    item_2->setData("C", Qt::EditRole);           		  //设置文本,可编辑角色
    item_2->setData("C项的提示", Qt::ToolTipRole);  		  //工具提示角色
    item_2->setData(QIcon(pixmap_2), Qt::DecorationRole); //图标,渲染角色

    parentItem->appendRow(item_2);

    //在树视图中显示数据
    QTreeView view;
    view.setModel(&model);
    view.show();

    //获取信息
    QModelIndex index_A = model.index(0,0, QModelIndex());
    qDebug() << "index_A 包含行数: "<<
                model.rowCount(index_A);

    QModelIndex index_B = model.index(0,0, index_A);
    qDebug() << "index_B 文本信息:"
             << model.data(index_B,Qt::EditRole).toString();
    qDebug() << "index_B 提示信息:"
             << model.data(index_B,Qt::ToolTipRole).toString();

    return app.exec();
}

testModelIndex运行效果
在这里插入图片描述
在这里插入图片描述

 
 

自定义模型示例:军事武器模型

  • 新建空项目testCustomModel,pro文件添加QT+= widgets,并添加main.cpp文件
  • 添加c++类WeaponModel继承自QAbstractTableModel.
    编辑weaponmodel.h代码

weaponmodel.h

#ifndef WEAPONMODEL_H
#define WEAPONMODEL_H
#include <QAbstractTableModel>

class WeaponModel : public QAbstractTableModel {
public:
    WeaponModel(QObject *parent = 0);
    //重写父类的函数
    virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
    virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
    QVariant data(const QModelIndex &index, int role) const;
    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
private:
    QVector<short> m_army;            //军队
    QVector<short> m_weaponType;      //武器类型
    QMap<short,QString> m_armyMap;    //军队映射
    QMap<short,QString> m_weaponMap;  //武器映射
    QStringList m_weapon;             //武器链表
    QStringList m_header;             //武器表头
    void populateModel();             //初始化表格数据
};
#endif // WEAPONMODEL_H

weaponmodel.cpp

#include "weaponmodel.h"

WeaponModel::WeaponModel(QObject *parent) : QAbstractTableModel(parent) {
    m_armyMap[1] = QString("空军");
    m_armyMap[2] = QString("海军");
    m_armyMap[3] = QString("陆军");
    m_armyMap[4] = QString("火箭军");

    m_weaponMap[1] = QString("轰炸机");
    m_weaponMap[2] = QString("战斗机");
    m_weaponMap[3] = QString("航空母舰");
    m_weaponMap[4] = QString("驱逐舰");
    m_weaponMap[5] = QString("武装直升机");
    m_weaponMap[6] = QString("坦克");
    m_weaponMap[7] = QString("洲际核导弹");
    m_weaponMap[8] = QString("超音速导弹");

    populateModel();
}

int WeaponModel::rowCount(const QModelIndex &parent) const {
    //返回军队的行数
    return m_army.size();
}

int WeaponModel::columnCount(const QModelIndex &parent) const {
    //返回列表头的列数
    return m_header.size();
}

//返回索引的数据, 将数字映射成字符串
QVariant WeaponModel::data(const QModelIndex &index, int role) const {
    if(!index.isValid()) return QVariant(); //传入值无效

    if(role == Qt::DisplayRole){
        switch(index.column()){ //当前模型的列
        case 0:
            return m_armyMap[m_army[index.row()]];
            break;
        case 1:
            return m_weaponMap[m_weaponType[index.row()]];
            break;
        case 2:
            return m_weapon[index.row()];
            break;
        default:
            return QVariant();
        }
    }
    return QVariant();
}

QVariant WeaponModel::headerData(int section, Qt::Orientation orientation, int role) const {
    if(role == Qt::DisplayRole && orientation == Qt::Horizontal){
        return m_header[section];
    }

    return QAbstractTableModel::headerData(section, orientation, role);
}

void WeaponModel::populateModel() {
    //初始化表头
    m_header << QString("军种")
             << QString("武器种类")
             << QString("武器");

    //初始化军队数据
    m_army << 1 << 1 << 2 << 2 << 3 << 3 << 4 << 4;

    //初始化武器类型数据
    m_weaponType << 1 << 2 << 3 << 4 << 5 << 6 << 7 << 8;

	//初始化武器
    m_weapon << QString("B-2") << QString("歼-20")
             <<QString("山东舰") << QString("济南舰")
             << QString("武直-10") << QString("99式步兵坦克")
             << QString("东风-41") << QString("东风-17");
}

main.cpp

#include <QApplication>
#include <QTableView>
#include "weaponmodel.h"

int main(int argc, char*argv[]){
    QApplication app(argc, argv);
    WeaponModel model;	//创建自定义模型
    QTableView view;	//创建表格视图
    view.setModel(&model);                //指定自定义模型在表格视图显示
    view.setWindowTitle("自定义表格视图"); //设置窗体标题    
    view.resize(400,300);                 //设置窗体大小
    view.show();                          //显示表格窗体

    return app.exec();
}

testCustomModel运行效果
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt - MVC模型/视图编程 的相关文章

  • 有没有办法向 QListView 添加部分?

    我正在使用 Qt5 2 和 C 来实现一个应用程序 需要显示一个列表 其中包含类似于下面的示例图像的部分 source ngo hung com http www ngo hung com files images contact list
  • 如何使用 Qt DOM 通过此语法获取 xml 属性

    我正在使用 Qt DOM XML 解析器 并且遇到了如下属性定义的问题
  • QMutex 是否需要是静态的,以便此类实例的其他线程调用知道暂停其操作?

    从多个线程调用以下附加函数 我不希望数据重写附加 因为计数器尚未增加 除了当前使用 Append 的线程之外 这是否会挂起所有进入的线程 或者其他线程会继续运行而不追加数据吗 互斥锁是否需要是 静态 的 或者每个实例都知道要暂停操作吗 如果
  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • 清除pyqt中布局中的所有小部件

    有没有办法清除 删除 布局中的所有小部件 self plot layout QtGui QGridLayout self plot layout setGeometry QtCore QRect 200 200 200 200 self r
  • QMainWindow 上的 Qt 布局

    我设计了一个QMainWindow with QtCreator s设计师 它由默认的中央小部件 aQWidget 其中包含一个QVBoxLayout以及其中的所有其他小部件 现在我想要的一切就是QVBoxLayout自动占据整个中央小部件
  • 如何在针对 Windows XP 的情况下使用 VS2012 构建 Qt 4/5?

    我正在尝试使用 Visual Studio 2012 构建 Qt 4 8 5 Qt 5 2 1 针对 Windows XP SDK v7 1a 使用 VS2102 编译时 源代码与 SDK v7 1a 存在各种不兼容性 因此无法开箱即用 这
  • 在 Qt 中使用多个不同的流读取同一文件

    使用 Qt 是否可以使用多个流读取文件以同时访问其中的不同数据部分 请注意 Qt 中的流 QTextStream QDataStream 不处理底层设备中的位置 流类只是一个包装器 用于更轻松地解析设备 QFile 实例 内的二进制数据 因
  • Qt:不完整类型和前向声明的使用无效

    我有一些误解 A h ifndef A H define A H include B h class A public B Q OBJECT public A endif A cpp include A h A A B ui gt blan
  • PyQt4 QPalette 不工作

    btn QtGui QPushButton Button self palettes btn palette palettes setColor btn backgroundRole QtCore Qt green btn setPalet
  • 覆盖 QWebView 中的页面回复

    我试图在 Qt 的 QWebView 中拦截页面 表单请求 并在某些情况下使用替代内容进行响应 QNetworkReply ngcBrowser createRequest Operation operation const QNetwor
  • 了解 Qt3D 创建的网格

    我创建了一个 Qt3D 网格 如下所示 Qt3DCore QEntity newEntity new Qt3DCore QEntity Qt3DExtras QConeMesh mesh new Qt3DExtras QConeMesh m
  • QML 列表视图拖放

    我想创建两个 qml 列表视图 可以执行两个功能 拖放一个列表中的项目以更改项目的顺序 跨列表拖放项目 项目将从一个列表中删除并添加到另一个列表中 根据 Qt 文档中的拖放示例 我决定创建两个访问同一列表模型的列表视图 列表模型中的每个项目
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 如何向 PyQt5 GUI 添加线程?

    所以我使用 QT Designer 创建了一个 GUI 它工作得很好 但在更复杂的调用中 它不会更新主窗口并锁定 我想运行我的CustomComplexFunction 在根据不断变化的后端信息更新主窗口中的文本编辑时 我希望它每 2 秒运
  • QAbstractItemModel 如何表示树?

    我仍然很难理解 QAbstractItemModel 对项目的表示 有两种返回 QModelIndex 项的方法对我来说没有任何意义 QModelIndex QAbstractItemModel index int row int colu
  • Qt:更改 Mac OS X 上的应用程序 QMenuBar 内容

    我的应用程序对多个 页面 使用 QTabWidget 其中顶级菜单根据用户所在的页面而变化 我的问题是 尝试重新创建菜单栏的内容会导致严重的显示问题 它在除 Mac OS X 之外的所有平台上按预期使用第一种和第三种样式 尚未测试第二种 但
  • Qt:将数字转换为 QString、QVariant 或 QString::number 哪个更好

    我只是好奇 比方说 我需要在控制台中输出一个数字 代码是 include

随机推荐

  • Python——Numpy高级索引

    Python Numpy高级索引 整数数组索引 或 与索引数组组合 布尔索引 比较运算符 取补运算符号 np iscomplex 过滤非复数元素 花式索引 传入顺序 倒序索引数组 使用 np ix 传入多个索引数组 https editor
  • MySQL——MySQL的介绍、安装、卸载与使用

    1 介绍 MySQL数据库隶属于MySQL AB公司 总部位于瑞典 后被oracle公司收购 优点 成本低 开放源码 可免费使用 性能高 执行很快 简单 容易安装和使用 DBMS分为两类 基于共享文件系统的DBMS Access 基于客户机
  • torch.max函数比较最大值

    新建两个tensor列表 利用torch max 进行两个列表的比较 import torch a torch tensor 1 2 3 4 5 print a a b torch tensor 10 1 7 9 3 print b b x
  • 认识HTTP请求

    要分析HTTP请求和响应必然少不了抓包工具 关于抓包工具的设置和下载推荐看抓包工具Fiddler的下载与设置 通过抓包得到的一个HTTP请求 HTTP请求的格式 结构分析 一 请求行 1 post是方法 可以表示一条HTTP请求要进行的操作
  • elementui的el-input校验正则表达式

    el input 只能输入正整数 包括0 在 Input 值改变时触发 handleEdit e let value e replace d g 只能输入数字 value value replace 0 d 1 第一位0开头 0后面为数字
  • 前后端分离之Springboot

    这里写目录标题 springboot后台搭建 1 创建父项目 1 1 创建netseal 2 创建子项目 2 1 创建webserver 2 2 创建common 3 正式编码 3 1 修改pom文件 3 1 1 netseal的pom x
  • 三色标记-垃圾收集器底层算法

    三色标记 文章目录 三色标记 前言 一 三色标记是什么 二 三色的介绍 1 黑色 2 灰色 3 白色 三 浮动垃圾 四 读写屏障 四 总结 前言 三色标记相信大家也有所耳闻 但是都没有过深入的了解 小编在之前和同事交流的过程中 了解到很多大
  • Struts2 入门案例——基于Struts2 任意两数据的代数和

    基于Struts2 任意两数据的代数和 问题 设计一个简单的 Web 程序 其功能是让用户输入两个整数 并提交给 Action 在 Action 中计算两个数的代数和 如果代数和为非负数 则跳转到 ch11 1 Positive jsp 页
  • vue项目中如何设置ico图标

    在vue项目开发中往往会设计到浏览器头部图标的设置 这里分享一下自己在项目中的使用的方法 如有不足的地方还望指正 直奔主题 1 首先如何制作ico图标 本人使用的是比特虫在线制作ico图标 使用方法很简单直接导入照片 输入生产码 点击生成i
  • springboot (2.0) 设置监听器,过滤器,拦截器

    springboot 2 0 设置监听器 过滤器 拦截器 github springboot2 0 项目名 springboot filter 1 项目结构和配置顺序 1 1配置顺序 listener WebListener声明为liste
  • 自己总结的数据库系统概论笔记,需要的拿去用

    1 绪论 1 1 概念 数据库系统包含 数据库 数据库管理系统 数据库管理员 应用系统 数据库 数据库是长期存储在计算机内 有组织的 可共享的大量数据的集合 数据库中的数据按照一定的数据模型 组织 描述和储存 具有较小的冗余度 较高的数据独
  • Angular --官方文档使用 Angular CLI创建项目

    1 在node环境下 标配 node v npm v 指令在命令窗口查看两个的版本号 node高于6 9 3 npm版本高于3 0 0 如果你是新安装的话 就不要考虑这个问题了 2 全局安装 Angular CLI npm install
  • Java线程池的使用(简单实现)

    一 线程池的概念 创建Java线程需要给线程分配堆栈内存以及初始化内存 还需要进行系统调用 频繁地创建和销毁线程会大大降低系统的运行效率 采用线程池来管理线程有以下好处 提升性能 线程池能独立负责线程的创建 维护和分配 线程管理 每个Jav
  • Navicat 连接Oracle时提示oracle library is not loaded的问题解决

    Navicat 连接Oracle时提示oracle library is not loaded的问题解决 笔者使用的Navicat Premium 12启动界面截屏 请注意是64位的 笔者win7 64位系统 连接Oracle时提示 ora
  • Eclipse报错-The selection cannot be launched,and there are no recent launches

    Eclipse报错 报错 The selection cannot be launched and there are no recent launches 怎么解决 解决办法 1 检查分号 2 检查main函数 3 检查main函数后面括
  • 【buildroot】buildroot使用总结

    文章目录 一 buildroot使用步骤 1 构建图形配置界面 2 配置Target options 3 配置Build options 4 配置Toolchain 5 配置 System configuration 6 配置 Filesy
  • 运用顺序表实现多项式相加

    本题要求输入两个一元多项式 然后输出它们的和 相加后得到的一元多项式 输入格式 输入一个整数n 表示输入组数 然后依次输入每一组数据 输入一个整数A 表示多项式的项数 小于100 然后输入A对整数 每一对整数表示对应项的指数和系数 输出格式
  • 通配符

    1 通配符 用来匹配文件名或目录 匹配文件内容用正则表达式 匹配任意一个字符 匹配0个或任意多个字符 也就是可以匹配任何内容 匹配括号中的任意一个字符 eg abc 匹配一个字符 或a 或b 或c 匹配括号中任意一个字符 代表一个范围 eg
  • 词向量的运算与Emoji生成器

    本文参考参考 没有对框架内容进行学习 旨在学习思路和方法 1 词向量运算 之前学习RNN和LSTM的时候 输入的语句都是一个向量 比如恐龙的名字那个例子就是将一个单词中的字母按顺序依次输入 这对于一个单词的预测是可行的 但是对于想让机器学习
  • Qt - MVC模型/视图编程

    MVC模型 视图编程 Qt中的模型 视图架构用来实现大量的数据存储 处理及显示 MVC Model View Controller 包括了3个组件 模型 Model 是应用对象 用来表示数据 视图 View 是模型的用户界面 用来显示数据