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()
定义选中整行或单个单元格。
基本用法示例
cpp
// 创建表格并设置行列数
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、列表文件添加方法并实现方法

cpp
#ifndef PEOPLEWIN_H
#define PEOPLEWIN_H
#include "sqlite3/sqlite3db.h"
#include <QWidget>
namespace Ui {
class PeopleWin;
}
class PeopleWin : public QWidget
{
Q_OBJECT
public:
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



cpp
#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、运行起来


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