1.三种形式的列表框
横向列表框
树状列表框
表格列表框
2. 横向列表框 QListWidget
(1)添加列表项
void QListWidget::addItem(const QString &label)
参数:label --》你要添加的列表项
void QListWidget::addItem(QListWidgetItem *item)
参数:QListWidgetItem::QListWidgetItem(const QIcon &icon, const QString &text)
参数:QIcon --》QT中用来表示图标的一个类
QIcon::QIcon(const QString &fileName) //通过图标的路径名去构造QIcon的对象
text --》列表项需要显示的文本内容
(2)常用信号
itemClicked(QListWidgetItem *item) //单击列表项触发该信号
参数:item --》指向的就是你单击的那个列表项
QString QListWidgetItem::text() const //返回列表项的文本内容
itemDoubleClicked(QListWidgetItem *item) //双击列表项触发该信号
clicked(const QModelIndex &index) //单击列表项触发该信号
参数:index --》你单击的列表项索引号,索引号从0开始
int QModelIndex::row() const //返回列表项的索引号
(3)删除列表项
QListWidgetItem *QListWidget::takeItem(int row)
参数:row --》你要删除的列表项索引号
(4)查找列表项
QList<QListWidgetItem *> QListWidget::findItems(const QString &text, Qt::MatchFlags flags)
返回值:容器,存放所有你查到的列表项
参数: text --》你要查找的列表项文本内容
flags --》Qt::MatchContains //查找所有匹配
(5)设置当前列表项位置
void QListWidget::setCurrentItem(QListWidgetItem *item)
参数:item --》你要设置的列表项
(6)设置文字大小,设置图标大小
void setFont(const QFont &) //设置字体
void setIconSize(const QSize &size) //设置图标大小
参数:QSize --》QT用来表示宽,高大小的类
QSize(int width, int height)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QList>
#include <QMessageBox>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//往横向列表框中添加若干个列表项
ui->listWidget->addItem("周杰伦");
ui->listWidget->addItem("郭富城");
ui->listWidget->addItem("黎明");
ui->listWidget->addItem("张学友");
//列表项带图标
QIcon icon1("C:/Users/PC/Desktop/share/mht.jpg");
QIcon icon2("C:/Users/PC/Desktop/share/ldh.jpg");
QListWidgetItem *item1=new QListWidgetItem(icon1,"马化腾");
QListWidgetItem *item2=new QListWidgetItem(icon2,"刘德华");
ui->listWidget->addItem(item1);
ui->listWidget->addItem(item2);
//把马化腾和刘德华字体以及图标设置一下
QFont myfont("楷体",24);
ui->listWidget->setFont(myfont);
ui->listWidget->setIconSize(QSize(40,40)); //匿名对象
}
MainWindow::~MainWindow()
{
delete ui;
}
//单击某个列表项
void MainWindow::on_listWidget_itemClicked(QListWidgetItem *item)
{
qDebug()<<"你目前单击的是: "<<item->text();
}
//双击某个列表项
void MainWindow::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
qDebug()<<"你目前双击的是: "<<item->text();
}
//单击某个列表项
void MainWindow::on_listWidget_clicked(const QModelIndex &index)
{
qDebug()<<"你目前单击列表项索引号是: "<<index.row();
}
//双击某个列表项,依据索引号删除这个列表项
void MainWindow::on_listWidget_doubleClicked(const QModelIndex &index)
{
//删除列表项
ui->listWidget->takeItem(index.row());
}
//搜索好友
void MainWindow::on_findbt_clicked()
{
//获取单行输入框中输入的内容
QString str=ui->lineEdit->text();
//查找列表项
QList<QListWidgetItem *> mylist=ui->listWidget->findItems(str,Qt::MatchContains);
//判断容器元素个数
int num=mylist.size();
if(num==0) //容器是空的
QMessageBox::warning(this,"没有这个好友","你搜索的好友不存在");
else //好友是存在
ui->listWidget->setCurrentItem(mylist.at(0)); //把找到的列表项设置成当前列表项
}
3.树状列表框 QTreeWidget
第一步:设置水平头 --》树状列表框的树根
void QTreeWidget::setHeaderLabel(const QString &label)
参数:label --》你要添加的水平头
第二步:添加顶层节点
void QTreeWidget::addTopLevelItem(QTreeWidgetItem *item)
参数:item --》你要添加的顶层节点
QTreeWidgetItem(const QStringList &strings)
参数:strings --》你要添加的字符串
第三步:添加子节点
void QTreeWidgetItem::addChild(QTreeWidgetItem *child)
参数:child --》你要添加的子节点
(1)给列表项添加图标
void QTreeWidgetItem::setIcon(int column, const QIcon &icon)
参数:column--》列号
icon--》你要添加的图标
(2)常用信号
跟横向列表框的信号名字一模一样
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置水平头
ui->treeWidget->setHeaderLabel("QQ好友");
//添加顶层节点
QStringList list1;
list1.append("大学同学"); //等价于list1<<"大学同学"
QStringList list2;
list2.append("同事");
QStringList list3;
list3.append("LOL战友");
QTreeWidgetItem *item1=new QTreeWidgetItem(list1);
QTreeWidgetItem *item2=new QTreeWidgetItem(list2);
QTreeWidgetItem *item3=new QTreeWidgetItem(list3);
ui->treeWidget->addTopLevelItem(item1);
ui->treeWidget->addTopLevelItem(item2);
ui->treeWidget->addTopLevelItem(item3);
//添加子节点
QTreeWidgetItem *item11=new QTreeWidgetItem(QStringList()<<"马云");
QTreeWidgetItem *item12=new QTreeWidgetItem(QStringList()<<"马糊涂");
QTreeWidgetItem *item13=new QTreeWidgetItem(QStringList()<<"马明哲");
//给第二个,第三个子节点添加图标
item12->setIcon(0,QIcon("C:/Users/PC/Desktop/share/ldh.jpg"));
item13->setIcon(0,QIcon("C:/Users/PC/Desktop/share/mht.jpg"));
item1->addChild(item11);
item1->addChild(item12);
item1->addChild(item13);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_treeWidget_itemClicked(QTreeWidgetItem *item, int column)
{
qDebug()<<"你目前单击的列表项是: "<<item->text(column);
qDebug()<<"你目前单击的列表项列号是: "<<column;
}
4.表格列表框 QTableWidget
第一步:设置表格的列数
void QTableWidget::setColumnCount(int columns)
参数:columns --》表格的列数
比如:我想做一个学生表格 姓名 班级 成绩
第二步:设置水平头 --》每一列字段的名字
void QTableWidget::setHorizontalHeaderLabels(const QStringList &labels)
参数:labels --》你要设置的水平内容
第三步:设置表格的行数
void QTableWidget::setRowCount(int rows)
参数:rows --》表格的行数
第四步:设置正文内容
void QTableWidget::setItem(int row, int column, QTableWidgetItem *item)
参数:row --》行号,从0开始
column --》列号,从0开始
item --》你要添加的正文内容
QTableWidgetItem::QTableWidgetItem(const QString &text)
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//设置表格的列数--》依据你个人的实际需求
ui->tableWidget->setColumnCount(3); //3列
//设置字段名
ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<<"班级"<<"成绩");
//设置表格的行数
ui->tableWidget->setRowCount(10);
//添加正文内容
ui->tableWidget->setItem(0,0,new QTableWidgetItem("张三"));
ui->tableWidget->setItem(0,1,new QTableWidgetItem("GZ2162"));
ui->tableWidget->setItem(0,2,new QTableWidgetItem("85.5"));
}
MainWindow::~MainWindow()
{
delete ui;
}
//单击某个列表项
void MainWindow::on_tableWidget_itemClicked(QTableWidgetItem *item)
{
qDebug()<<"你目前单击的是: "<<item->text();
}