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模型/视图编程 的相关文章

  • 如何在 C++ 和 QML 应用程序中使用 qrc?

    我在 Windows7 上用 c qnd Qt Creator QML 编写了 Qt Quick Desktop 应用程序 现在 我必须部署它 并且我需要隐藏 qml 文件和图像 意味着 将它们放入资源等中 我读到有一个很好的方法可以使用
  • Qt Creator:如何区分 win32 和 win64

    我必须在 pro 文件中执行类似的操作 win32 LIBS L 3rdparty libusb win32 lib msvc llibusb else win64 LIBS L 3rdparty libusb win32 lib msvc
  • 当我尝试构建 Qt 4.7.1 静态库时,“找不到 -ljscore”

    我尝试从最新的源构建静态 Qt 库 但出现以下错误 usr bin ld cannot find ljscore collect2 ld returned 1 exit status 如何解决这个问题呢 这是 Qt 构建系统中自 4 7 0
  • Qt - 如何粘合两个窗口并将它们移动在一起?

    就像qmmp Qt 音乐播放器ui设计一样 这两个或三个窗口实际上在同一个窗口中 因为只有一个dock图标 并且这些窗口可以一起移动并相互附着 我看了源码 好像有用QDockWidget 但我真的不知道如何获得它的细节 当您手动移动辅助窗口
  • 错误 LNK2001:无法解析的外部符号 __CxxFrameHandler3

    我正在将 Qt 从 VS 2013 迁移到 Qt 5 10 1 到 VS 2015 出现以下多个链接错误 error LNK2001 unresolved external symbol CxxFrameHandler3 error LNK
  • QGraphicsScene::clear 不会改变 sceneRect

    我有一个 QGraphicsScene 场景 和 QGraphicsView graphicsView 我有一个画图的方法 当我需要重绘所有图形时 我调用这个方法 一切都好 但我意识到 scene gt clear 不会改变 sceneRe
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 退出 Qt 程序的正确方法?

    我应该如何退出 Qt 程序 例如在加载数据文件时 发现文件损坏 并且用户需要退出该应用程序或重新启动数据文件 我是不是该 call exit EXIT FAILURE call QApplication quit call QCoreApp
  • Qt 布局,在小部件大小更改后调整到最小大小

    基本上我有一个QGridLayout里面有一些小部件 最重要的是 2 个标签 我用它们将图像绘制到屏幕上 好吧 如果用户愿意 他可以更改传入图像的分辨率 从而强制标签调整大小 我们假设标签的初始大小是320x240 用户将 VideoMod
  • 即使在可访问性中勾选应用程序,AXIsProcessTrustedWithOptions 也不会返回 true

    As this question https stackoverflow com questions 17693408 enable access for assistive devices programmatically on 10 9
  • QT从QTableWidgetItem继承到Widget并覆盖'<'运算符

    我想要一个QTableWidget具有定制的某些单元QProgressBars 并且我希望能够对包含这些的列进行排序 我的定制QProgressBar继承自两者QProgressBar and QTableWidgetItem 并且我正在覆
  • Qt 5.6 测试版 Visual Studio 2015

    我已经安装了这个 http download qt io development releases qt 5 6 5 6 0 beta qt opensource windows x86 msvc2015 5 6 0 beta exe mi
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 从 Qt4 中的文本文件中逐字读取

    我想在 Qt4 中逐字读取一个文本文件 说实话我对它很陌生 我想在另一个文件中每行一个字写入 我可以在 C 中做到这一点 没有任何问题 但是当我尝试在 Qt4 中使用 ifstream 和 ofstream 时 我遇到了错误 这是我的 Qt
  • 如何在 QtQuick 2 中对 QML TableView 进行排序?

    我想使用 Qt 5 1 实现具有自定义角色的可排序 TableView 但我不知道当用户单击标题时该怎么做才能对其进行排序 在我的 Qt pro 文件中 我添加了 android ios blackberry qtHaveModule wi
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 如何在 Qt 应用程序中通过终端命令运行分离的应用程序?

    我想使用命令 cd opencv opencv 3 0 0 alpha samples cpp cpp example facedetect lena jpg 在 Qt 应用程序中按钮的 clicked 方法上运行 OpenCV 示例代码
  • Qt GUI 应用程序中的控制台输出?

    我有一个在 Windows 上运行的 Qt GUI 应用程序 它允许传递命令行选项 在某些情况下我想向控制台输出一条消息 然后退出 例如 int main int argc char argv QApplication a argc arg
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad

随机推荐

  • 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 是模型的用户界面 用来显示数据