当前位置: 首页 > news >正文

fullpage wow做的网站最近的新闻大事

fullpage wow做的网站,最近的新闻大事,福田在线,软件界面设计工具免费标准项模型 一.使用标准型项模型1.应用场景2.界面拖放3.创建模型4.配套模型5.视图设置模型6.视图属性的设置 二.从文件中拿到数据1.文件对话框获取文件名2.创建文件对象并初始化3.打开文件对象4.创建文本流并初始化5.读取文本流6.关闭文件7.完整代码 三.为模型添加数据1.自定义…

标准项模型

  • 一.使用标准型项模型
    • 1.应用场景
    • 2.界面拖放
    • 3.创建模型
    • 4.配套模型
    • 5.视图设置模型
    • 6.视图属性的设置
  • 二.从文件中拿到数据
    • 1.文件对话框获取文件名
    • 2.创建文件对象并初始化
    • 3.打开文件对象
    • 4.创建文本流并初始化
    • 5.读取文本流
    • 6.关闭文件
    • 7.完整代码
  • 三.为模型添加数据
    • 1.自定义函数
    • 2.模型添加表头
    • 3.模型添加数据
  • 四.模型插入数据
    • 1.尾部添加数据
    • 2.任意位置插入
  • 五.模型删除数据
  • 六.总结一下

一.使用标准型项模型

1.应用场景

标准项是有行有列的,类似于表格,所以标准项模型一般可以用于管理表格类的数据。
还是先上目标效果:
在这里插入图片描述
我们的数据来源于文本文件:
在这里插入图片描述

2.界面拖放

在这里插入图片描述
需要蔬菜的可以dd我。。。

3.创建模型

在mainwindow.h中

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QStandardItemModel>//标准型模型头文件QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;QStandardItemModel* model;
};
#endif // MAINWINDOW_H

文本文件中一共有6列,我们可以定义一个变量来记录
在这里插入图片描述
在mainwindow.cpp中

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);colCount=6;model=new QStandardItemModel(2,colCount);//创建模型初始化行列
}MainWindow::~MainWindow()
{delete ui;
}

4.配套模型

在表格中,无疑我们需要许多的选择,我们可以增加一个项选择模型。
在mainwindow.h中

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QStandardItemModel>//标准型模型头文件
#include <QItemSelectionModel>//项选择模型QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;int colCount;QStandardItemModel* model;QItemSelectionModel*selectionModel;
};
#endif // MAINWINDOW_H

同时,使用标准型模型来初始化项选择模型。

model=new QStandardItemModel(2,colCount);
selectionModel=new QItemSelectionModel(model);

5.视图设置模型

ui->tableView->setModel(model);
ui->tableView->setSelectionModel(selectionModel);

现在就可以看到了:
在这里插入图片描述
表自适应大小(表格组件有讲过哦):

auto hearView=ui->tableView->horizontalHeader();
hearView->setSectionResizeMode(QHeaderView::Stretch);

运行结果:
在这里插入图片描述

6.视图属性的设置

设置选择模式,按ctrl可以多个,按shift可以矩形选中
设置选择行为,就是点击是行还是列还是单元格。这里是单元格

 ui->tableView->setSelectionMode(QAbstractItemView::ExtendedSelection);ui->tableView->setSelectionBehavior(QAbstractItemView::SelectItems);

参数的选择可以F1在线文档去找。

二.从文件中拿到数据

1.文件对话框获取文件名

头文件记得:

#include <QFileDialog>//文件对话框

第一个参数是父窗口,第二个是文件对话框的名字,第三个是获取应用程序的路径,第四个参数是筛选器。

void MainWindow::on_actionOpen_triggered()
{QString fileName=QFileDialog::getOpenFileName(this,"打开一个文件",QCoreApplication::applicationDirPath(),"文本文件(*.txt);;所有文件(*.*)");
}

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

2.创建文件对象并初始化

记得现判断一下,如果没有获取到文件名就直接退出了

 if(fileName.isEmpty()){return;}

用文件名初始化文件对象

QFile qFile(fileName);

3.打开文件对象

用只读和文本的方式打开文件,如果打不开就退出吧。

if(!qFile.open(QIODevice::ReadOnly|QIODevice::Text)){return;}

4.创建文本流并初始化

记得头文件哦。

#include <QTextStream>//文本流
...
QTextStream stream(&qFile);

5.读取文本流

没在文本结尾就一直读,每次读一行,将读到的信息保存到内存变量contents中,纯文本编辑器也添加读的信息。

QStringList contents;
while(!stream.atEnd()){QString line=stream.readLine();contents.push_back(line);ui->plainTextEdit->appendPlainText(line);}

6.关闭文件

qFile.close();

7.完整代码

void MainWindow::on_actionOpen_triggered()
{QString fileName=QFileDialog::getOpenFileName(this,"打开一个文件",QCoreApplication::applicationDirPath(),"文本文件(*.txt);;所有文件(*.*)");if(fileName.isEmpty()){return;}QFile qFile(fileName);if(!qFile.open(QIODevice::ReadOnly|QIODevice::Text)){return;}QTextStream stream(&qFile);QStringList contents;while(!stream.atEnd()){QString line=stream.readLine();contents.push_back(line);ui->plainTextEdit->appendPlainText(line);}qFile.close();
}

运行结果:
在这里插入图片描述
OK,数据我们是拿到了,接下来我们开始将其添加到模型中。

三.为模型添加数据

1.自定义函数

用来初始化模型,用我们刚刚从文本拿到的数据

//添加数据到模型
initModel(contents);

2.模型添加表头

文本文件的第一行为表头,我们优先处理,先拿出第一行,然后用正则表达式来拆开第一行。
"\s+"是跳过多个空白符,QString::SkipEmptyParts是跳过空白字段

void MainWindow::initModel(QStringList contents)
{QString headLine=contents[0];//数据第一行为表头QStringList headList=headLine.split(QRegExp("\\s+"),QString::SkipEmptyParts);model->setHorizontalHeaderLabels(headList);//设置表头标签
}

运行结果:
在这里插入图片描述

3.模型添加数据

int rows=contents.count();for(int i=1;i<rows;i++)//从1开始,因为表头已经取出了{QString line=contents[i];QStringList list=line.split(QRegExp("\\s+"),QString::SkipEmptyParts);for(int j=0;j<colCount-1;j++){QStandardItem* item=new QStandardItem(list[j]);model->setItem(i-1,j,item);//将数据添加到模型}}

拿到内存中的数据,先拆开,然后添加到QStandarditem中,然后再设置到模型中。
因为最后一列有复选框,所以我们单独进行处理:

QStandardItem* item=new QStandardItem(headList[colCount-1]);item->setCheckable(true);if(list[colCount-1]=="否"){item->setCheckState(Qt::Unchecked);}else{item->setCheckState(Qt::Checked);}model->setItem(i-1,colCount-1,item);

运行结果:
在这里插入图片描述

四.模型插入数据

1.尾部添加数据

void MainWindow::on_actionAdd_triggered()
{selectionModel->clearSelection();//清空选中的QStringList list={"姚国林","男","管理层","BOSS","100000","婚否"};QList<QStandardItem*> itemList;//插入需要QStandardItem*列表for(int i=0;i<list.count();i++){QStandardItem *item=new QStandardItem(list[i]);itemList.push_back(item);}itemList[colCount-1]->setCheckable(true);//最后一列设置复选框model->insertRow(model->rowCount(),itemList);//在最后一行插入数据QModelIndex index=model->index(model->rowCount()-1,0);//通过模型获取当前插入模型索引selectionModel->setCurrentIndex(index,QItemSelectionModel::Select);//设置刚刚插入的索引
}

运行结果:
在这里插入图片描述

2.任意位置插入

和尾插基本一样,只是插入位置,是我们当前选中的位置

void MainWindow::on_actionInsert_triggered()
{selectionModel->clearSelection();//清空选中的QStringList list={"姚国林","男","管理层","BOSS","100000","婚否"};QList<QStandardItem*> itemList;//插入需要QStandardItem*列表for(int i=0;i<list.count();i++){QStandardItem *item=new QStandardItem(list[i]);itemList.push_back(item);}itemList[colCount-1]->setCheckable(true);//最后一列设置复选框QModelIndex index=selectionModel->currentIndex();//通过选择模型获取当前模型索引model->insertRow(index.row(),itemList);//在最后一行插入数据selectionModel->setCurrentIndex(index,QItemSelectionModel::Select);//设置刚刚插入的索引
}

运行结果:
在这里插入图片描述

五.模型删除数据

void MainWindow::on_actionDel_triggered()
{QModelIndex index=selectionModel->currentIndex();//通过选择模型获取当前模型索引if(index.row()==model->rowCount()-1)//如果选中的是最后一行,直接删除{model->removeRow(index.row());}else{model->removeRow(index.row());selectionModel->setCurrentIndex(index,QItemSelectionModel::Select);//以单元格选中的形式}
}

运行结果:
在这里插入图片描述

六.总结一下

还有一些功能,我们下一接再讲,你们先熟练掌握这些功能。
这节课主要用到的模型是标准项模型,附加一个选择模型。
每个接口不要死记硬背,注意其含义,参数可以到在线文档里面查找。

慌了,你就慢下来,还慌,你就停下来!

http://www.yayakq.cn/news/496294/

相关文章:

  • 单位网站设计流程步骤wordpress 登陆api
  • 模板网站合同石景山网站制作
  • 社交平台网站建设预算百度词条优化工作
  • 做音乐网站的目的网站建设与管理综合实践
  • 平面设计师常用网站附近做网站的公司电话
  • 东乡做网站dw怎么做网站后台
  • 网站网页区别是什么意思aso优化技术
  • 微信上怎么做网站链接龙岩网络图书馆注册
  • 做公司网站的公司有哪些国外做vj的网站
  • 天津营销网站建设东莞市场监督管理局官网
  • 三站合一的网站怎么做教程网站产品详情用哪个软件做的
  • 网站建设移交确认书企业为什么建站
  • 网站界面 ui 设计答案国外网站建立
  • 公司响应式网站建设平台wordpress爆破
  • 企业网站建设的实验报告中山网站建设文化平台
  • 银川网站建设那家公司比较好织梦网站主页代码在后台怎么改
  • 佛山专业网站建设公司哪家好公司网站建设费用科目
  • 免费自己建立网站近几天的新闻摘抄
  • 网站建设资料收集网页开发者模式怎么打开
  • 提升学历的学校相城seo网站优化软件
  • 百度云搭建网站wordpress内容溢出
  • 离石商城网站建设系统如何做网站拥有自己的地址
  • 杭州网站设计 网站设计网站费用多少
  • 不用编程做网站深圳设计网站公司
  • 免费制作照片的网站wordpress更换皮肤
  • 合肥做网站找哪家好网站建设要求 牛商网
  • 个人网站图片建设网站可以赚钱吗
  • 大气金融投资企业网站模板做网站包域名包服务器多少钱
  • 万网上传网站网店运营推广高级实训攻略
  • 网站开发人员需求分析织梦做的网站打开不是