41 ItemsWidget之QListWidget

本文详细介绍了Qt中的QListWidget控件及其相关属性和函数接口,包括列表项的显示设置、增加、插入和删除项目的方法。通过具体代码示例展示了如何使用QListWidget控件,并解释了其UI属性的作用。

Qt提供QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。 QListWidget类列表框控件支持两种列表项显示方式,即QListView::IconMode和QListView::ListMode。

UI属性介绍

autoScroll;//拖动时有滚动条
editTriggers;//编辑触发方式
tabKeyNacigation;//tab键的方式
DragDropMode;//拖放项目的模式
alternatingRowColors;//不同行不同颜色
slletionMode;//选择模式
textElideMode;//文本模式,当文本超出边界时,会以“...”显示,前提是关掉滚动条

flow;//项目是竖着放,还是横着放
isWrapping;//当一个界面显示不下时,是否换行
resizeMode;//调整界面是否会再次对项目布局
layoutMode;//此属性确定项的布局应立即进行还是延迟进行。
           //此属性保存项的布局模式。当模式为SinglePass(默认模式)时,所有项都是一次性排列的。
           //当模式被批处理时,在处理事件时,这些项以批处理大小的项的形式排列。
           //这使得在其他可见项目被放置时,可以立即查看并与之交互。
modelColumn;//当前显示哪些列

currentRow;//当前第几个选项
sortingEnabled;//是否支持排序

函数接口介绍

列表项的显示设置

setViewMode(QListView::IconMode);   //设置显示模式为图标模式。
setViewMode(QListView::ListMode);   //设置显示模式为列表模式。

增加项目

void	addItem(QListWidgetItem * item);

插入项目

void	insertItem(int row, QListWidgetItem * item);

删除项目

QListWidgetItem * takeItem(int row);

注意:利用takeItem删除项目时,必须手动删除对应的Item,也就是用delet释放内存。

Removes and returns the item from the given row in the list widget; otherwise returns 0.
Items removed from a list widget will not be managed by Qt, and will need to be deleted manually.

 

QAbstractItemView参考:

https://blog.youkuaiyun.com/qq_40732350/article/details/86686361

实例代码:

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->toolBox->setItemText(0, QString("好友1"));
    ui->toolBox->setItemText(1, QString("好友2"));

    name_init();

    ui->listWidget->setAutoScroll(true);
    ui->listWidget->setAlternatingRowColors(true);
    ui->listWidget->setDragDropMode(QAbstractItemView::InternalMove);
    ui->listWidget->setResizeMode(QListView::Adjust);

    ui->listWidget_2->setAutoScroll(true);
    ui->listWidget_2->setAlternatingRowColors(true);
    ui->listWidget_2->setDragDropMode(QAbstractItemView::InternalMove);
    ui->listWidget_2->setResizeMode(QListView::Adjust);

    connect(ui->listWidget, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(listWidget_DoubleClicked(QModelIndex)));
    connect(ui->listWidget_2, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(listWidget_2_DoubleClicked(QModelIndex)));
}

void Widget::name_init()
{
    (* ui->listWidget->item(0)).setText(QString("张一"));
    (* ui->listWidget->item(1)).setText(QString("张二"));
    (* ui->listWidget->item(2)).setText(QString("张三"));

    (* ui->listWidget_2->item(0)).setText(QString("王一"));
    (* ui->listWidget_2->item(1)).setText(QString("王二"));
    (* ui->listWidget_2->item(2)).setText(QString("王三"));

}

void Widget::listWidget_DoubleClicked(const QModelIndex &index)
{
    qDebug()<<(* ui->listWidget->item(index.row())).text();
}

void Widget::listWidget_2_DoubleClicked(const QModelIndex &index)
{
    qDebug()<<(* ui->listWidget_2->item(index.row())).text();
}

运行结果:

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值