cpp文件
#include "userListTest.h"
#include "ui_userListTest.h"
#include <QList>
#include <QDebug>
//treeview 依赖
#include <QStandardItem>
#include <QStandardItemModel>
#include <QTreeView>
#include <QStandardItem>
#pragma execution_character_set("utf-8")
userListTest::userListTest(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
User user{ 1,"指向zcsd","还不错" };
addUser(user);
User user2{ 2,"指向zc让微软sd","发顺丰s" };
addUser(user2);
User user3{ 3,"指向温热","eweferRERF反对法" };
addUser(user3);
User user4{ 4,"师父父zcsd","分手大师" };
addUser(user4);
User user5{ 5,"指向范德萨发生的","房贷首付sdfs" };
addUser(user5);
qDebug() << users.size();
//调用点击方法
connect(ui.pushButton, &QPushButton::clicked, this, &userListTest::pushButton_clicked);
}
userListTest::~userListTest()
{}
void userListTest::addUser(User user)
{
users.append(user);
}
bool userListTest::removeUser(int id)
{
for (int i = 0; i < users.length(); i++)
{
if (users[i].id=id)
{
users.removeAt(i);
return true;
}
}
return false;
}
void userListTest::updateUser(int id, QString newname, QString newsignature)
{
for (User &user : users) {
if (user.id = id)
{
user.name= newname;
user.signature = newsignature;
}
}
}
QList<User> userListTest::getUser(int id)
{
for (User &user : users) {
if (user.id==id)
{
return users;
}
}
}
void userListTest::pushButton_clicked()
{
//treeview
//视图
QTreeView *treeView = new QTreeView;
//模型
QStandardItemModel *standardItemModel = new QStandardItemModel;
//设置列表标题
standardItemModel->setHorizontalHeaderLabels({ "用户信息" });
// 设置根节点
QStandardItem *rootItem = new QStandardItem("用户数据");
for (User &it:users)
{
//使用QString的arg方法来格式化一个字符串
QStandardItem *child1 = new QStandardItem(QString("%1 %2")
.arg("id").arg(it.id));
rootItem->appendRow(child1);
// 创建子节点 2
//使用QString的arg方法来格式化一个字符串
QStandardItem *child2 = new QStandardItem(QString("%1 %2")
.arg("name").arg(it.name));
rootItem->appendRow(child2);
// 创建子节点 3
//使用QString的arg方法来格式化一个字符串
QStandardItem *child3 = new QStandardItem(QString("%1 %2")
.arg("签名").arg(it.signature));
rootItem->appendRow(child3);
}
//将根节点设置为模型的顶级层
standardItemModel->appendRow(rootItem);
//设置树视图
ui.treeView->setModel(standardItemModel);
}
头文件
结构体最好写在头文件
#pragma once
#include <QtWidgets/QWidget>
#include "ui_userListTest.h"
#include <QList>
struct User {
int id;
QString name;
QString signature;
User(int id, QString name, QString signature) :id(id), name(name), signature(signature) {}
QString toString() {
return QString("%1, %2, %3").arg(id).arg(name).arg(signature);
}
};
class userListTest : public QWidget
{
Q_OBJECT
public:
QList<User>users;
userListTest(QWidget *parent = nullptr);
~userListTest();
void addUser(User user);
bool removeUser(int id);
void updateUser(int id,QString newname, QString newsignature);
QList<User> getUser(int id);
void pushButton_clicked();
private:
Ui::userListTestClass ui;
};
效果