QT列表框

本文介绍了Qt中的三种列表框形式:横向列表框、树状列表框和表格列表框,详细讲解了QListWidget的添加、删除、查找列表项及信号处理,以及QTreeWidget和QTableWidget的使用方法,包括添加节点、设置头标签和内容等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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();
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hqb_newfarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值