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、运行起来
原创不易,打字不易,截图不易,撸码不易,整理不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,灌水,动动你的金手指,祝您早日实现财务自由。