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

QT肝8天09--用户列表

1、先看颜值,点个赞

2、直接上干货

1、创建目录 

在项目根目录下,创建目录subwin,创建目录的目的是分门别类管理文件,目录名称你自己定好。

2、添加文件

3、数据库添加方法

4、列表窗体UI布局设计 

QTableWidget 概述

QTableWidget 是 Qt 中的一个表格控件,继承自 QTableView,用于显示和编辑二维表格数据。它提供了单元格级别的操作(如文本、图标、复选框等),适合处理小型静态数据或需要直接交互的场景。


核心功能

数据管理

  • 通过 setItem(row, column, QTableWidgetItem*) 设置单元格内容。
  • 通过 item(row, column) 获取单元格对象,支持文本、图标等属性修改。

行列操作

  • 使用 setRowCount() 和 setColumnCount() 动态调整表格大小。
  • 通过 insertRow()removeColumn() 等方法增删行列。

样式与交互

  • 表头定制:horizontalHeader() 和 verticalHeader() 控制行列标题。
  • 单元格编辑:setEditTriggers() 设置编辑条件(如双击编辑)。
  • 选择模式:setSelectionBehavior() 定义选中整行或单个单元格。

基本用法示例

// 创建表格并设置行列数  
QTableWidget *table = new QTableWidget(3, 2);  
table->setHorizontalHeaderLabels({"Name", "Age"});  // 填充数据  
QTableWidgetItem *item1 = new QTableWidgetItem("Alice");  
QTableWidgetItem *item2 = new QTableWidgetItem("25");  
table->setItem(0, 0, item1);  
table->setItem(0, 1, item2);  // 设置单元格不可编辑  
item2->setFlags(item2->flags() & ~Qt::ItemIsEditable);  

使用 QTableWidget 创建表格

 

5、列表文件添加方法并实现方法

#ifndef PEOPLEWIN_H
#define PEOPLEWIN_H
#include "sqlite3/sqlite3db.h"
#include <QWidget>namespace Ui {
class PeopleWin;
}class PeopleWin : public QWidget
{Q_OBJECTpublic:explicit PeopleWin(QWidget *parent = nullptr);~PeopleWin();void initUI();//初始化样式void initOperators();//初始化数据void BindOperatorList(OperatorInfoList operators);//绑定数据到列表private slots:void on_btnSearch_clicked();private:Ui::PeopleWin *ui;
};#endif // PEOPLEWIN_H

#include "peoplewin.h"
#include "sqlite3/sqlite3db.h"
#include "ui_peoplewin.h"#include <QGraphicsDropShadowEffect>
#include <qgridlayout.h>PeopleWin::PeopleWin(QWidget *parent): QWidget(parent), ui(new Ui::PeopleWin)
{ui->setupUi(this);initUI();//初始化UI界面initOperators();//初始化列表//设置搜索框提示信息ui->lineEdit->setPlaceholderText("请输入用户名或姓名");
}PeopleWin::~PeopleWin()
{delete ui;
}void PeopleWin::initUI()
{// 设置图标this->setWindowIcon(QIcon(":/img/zhaoxi.png"));// 布局Qt::WindowFlags flags = this->windowFlags();flags |= Qt::FramelessWindowHint;       // //隐藏标题栏flags &= ~Qt::WindowMinMaxButtonsHint;  // 隐藏最小最大化按钮flags &= ~Qt::WindowCloseButtonHint;    // 隐藏关闭按钮this->setWindowFlags(flags);
}//初始化数据
void PeopleWin::initOperators()
{OperatorInfoList operators;Sqlite3Db db;OperatorInfoList operatorinfs;if(db.selectOperators(operatorinfs)){//operatorinfs就是查到的列表BindOperatorList(operatorinfs);}
}//绑定数据到列表
void PeopleWin::BindOperatorList(OperatorInfoList operators)
{ui->tableWidget->setRowCount(0);ui->tableWidget->verticalHeader()->hide();  // 默认的tablewidget 会有一列,这一列需要隐藏//设置标题栏的扩展模式为平铺ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);//循环绑定每个对象到列表for(int i=0;i<operators.size();i++){ui->tableWidget->setRowCount(i+1);ui->tableWidget->setRowHeight(i,40);//行高OperatorInfo opt=operators.at(i);//获取循环位置的对象// //第1列,绑定序号QTableWidgetItem *item=new QTableWidgetItem(QString::number(i+1));//创建一行记录item->setTextAlignment(Qt::AlignCenter);//对齐方式ui->tableWidget->setItem(i,0,item);//添加一行项目//第2列,绑定头像, 展示头像的时候,绘制一个图片QPixmap pIcon;pIcon.loadFromData(opt.icon);pIcon = pIcon.scaled(24, 24);auto picLabel = new QLabel;picLabel->setPixmap(pIcon);//设置图标picLabel->resize(36, 36);//设置尺寸auto cellWidget = new QWidget;auto layout = new QHBoxLayout;//layout->setMargin(0);layout->setAlignment(Qt::AlignCenter);layout->addWidget(picLabel);cellWidget->setLayout(layout);ui->tableWidget->setCellWidget(i, 1, cellWidget);ui->tableWidget->setColumnWidth(1,200);//第3列, 绑定姓名item = new QTableWidgetItem(QString("%1").arg(opt.name));item->setTextAlignment(Qt::AlignCenter);ui->tableWidget->setItem(i, 2, item);//第4列, 绑定用户名item = new QTableWidgetItem(QString("%1").arg(opt.username));item->setTextAlignment(Qt::AlignCenter);ui->tableWidget->setItem(i, 3, item);//第5列, 绑定地址item = new QTableWidgetItem(QString("%1").arg(opt.addr));item->setTextAlignment(Qt::AlignCenter);ui->tableWidget->setItem(i, 4, item);// 第6列,绑定性别QString gen;if (opt.gender == 0) {gen = "男";} else {gen = "女";}item = new QTableWidgetItem(gen);item->setTextAlignment(Qt::AlignCenter);ui->tableWidget->setItem(i, 5, item);cellWidget = new QWidget;layout = new QHBoxLayout;layout->setAlignment(Qt::AlignCenter);layout->setContentsMargins(0,0,0,0);cellWidget->setLayout(layout); }
}//刷新
void PeopleWin::on_btnSearch_clicked()
{initOperators();//重新加载
}

6、运行起来

原创不易,打字不易,截图不易,撸码不易,整理不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,灌水,动动你的金手指,祝您早日实现财务自由。

http://www.dtcms.com/a/435629.html

相关文章:

  • 温州阀门网站建设河北建设工程信息网招聘网
  • 聚成网站建设公众平台微信公众号官网
  • 题库批量(文件)导入的全链路优化实践
  • 天津的网站建设公司个人网站不备案做经营性质网站
  • 无锡中英文网站建设青岛做网络推广的公司有哪些
  • Azure - Azure需要MFA login了(2025-09-30之后)
  • List迭代器和模拟(迭代器的模拟)
  • 安卓手机做网站服务器全国十大软件开发培训机构
  • 周口网站制作哪家好邢台seo关键词引流
  • 上海网络公司网站环保类网站模板免费下载
  • 移动商务网站开发课程ppt设计培训班
  • 专门做外包的网站简诉网站建设的基本流程
  • 黄浦区未成年人思想道德建设网站传统营销与网络营销的区别
  • 网站的功能和特色响应式网站的开发
  • 如何在企业系统作系统中使用命令提示符查找 PowerEdge 服务编号
  • vue3中选项式 api 、组合式 api能能否混用
  • 汕头企业网站建设价格如何建设网站使用
  • 做电影网站需要多打了服务器湖北省建设厅造价官方网站
  • 哪里有做装修网站网上家教网站开发
  • 电商推广费用占比汕头网站快速排名优化
  • PCB学习——STM32F103VET6电源部分
  • php网站空间支持seo软件系统
  • 深圳方维网站建设销售app软件大概需要多少钱
  • ICT 数字测试原理 5 - -VCL 简介
  • 哪个网站域名便宜dedecms 购物网站
  • 网站首页包含的内容怎么做5080电影电视剧大全
  • Product Hunt 每日热榜 | 2025-10-01
  • 一块钱购物网站帝国cms7.0网站地图
  • 爬虫 API 开发:从架构设计到电商风控突破的全维度实践
  • 动态手机网站怎么做的网络行业做什么挣钱