QListWidget「建议收藏」

QListWidget「建议收藏」QListWidget我们要介绍的第一个是QListWidget。先来看下面的代码示例:12345678910111213141516171819202122232425262728label=newQLabel(this);label->setFixedWidth(70)

大家好,又见面了,我是你们的朋友全栈君。

QListWidget

我们要介绍的第一个是QListWidget。先来看下面的代码示例:

QListWidget是简单的列表组件。当我们不需要复杂的列表时,可以选择QListWidgetQListWidget中可以添加QListWidgetItem类型作为列表项,QListWidgetItem即可以有文本,也可以有图标。上面的代码显示了三种向列表中添加列表项的方法(实际是两种,后两种其实是一样的),我们的列表组件是listWidget,那么,向listWidget添加列表项可以:第一,使用下面的语句

第二,使用

注意这两种添加方式的区别:第一种需要在构造时设置所要添加到的QListWidget对象;第二种方法不需要这样设置,而是要调用addItem()或者insertItem()自行添加。如果你仔细查阅QListWidgetItem的构造函数,会发现有一个默认的type参数。该参数有两个合法值:QListWidgetItem::Type(默认)和QListWidgetItem::UserType。如果我们继承QListWidgetItem,可以设置该参数,作为我们子类的一种区别,以便能够在QListWidget区别处理不同子类。

我们的程序的运行结果如下:

QListWidget 示例

我们可以利用QListWidget发出的各种信号来判断是哪个列表项被选择,具体细节可以参考文档。另外,我们也可以改变列表的显示方式。前面的列表是小图标显示,我们也可以更改为图标显示,只要添加一行语句:

结果如下:

QListWidget IconMode 示例

====================分割线==============================

 

QListWidget

分类: QT开发


listWidget = QListWidget() #实例化一个(item base)的列表

listWidget.addItem(‘dd’) #添加一个项

listWidget.addItems([]) # 从序列中添加子项

listWidget.setDragEnabled(True) #设置拖拉

listWidget.sortItems() #排序

listWidget.selectAll()全选

listWidget.setSortingEnabled(bool) #设置自动排序

listWidget.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection) #设置选择模式

选择模式有:ExtendedSelection 按住ctrl多选, SingleSelection 单选 MultiSelection 点击多选 ContiguousSelection 鼠标拖拉多选

listWidget.setCurrentRow(0) 设置当前选择行默认为-1

listWidget.count() #得到子项总数

listWidget.item(row).text() #得到第 row 行的内容 listWidget.item(row) 返回一个item 对象

listWidget.takeItem(row) #返回row 行的所在的item 对象 可以用在 insertItem()中

listWidget.insertItem(2,item) #在第二行插入一项 item 可谓为一个listviewitem对象 或者string

listWidget.setCurrentItem(‘dd’) #设置’dd’为当前项

listWidget.selectedItems() 返回一个包含item对象 的list 对象

修改item 的内容

item.setText(‘dsds’) # 设置item的内容为dsds item为对象 可从 listWidget.item(row) takeItem(row) 得到

 

将listwidget里的列表横向显示:

    setViewMode ()的参数为QListView::IconMode,若为QListView::ListMode,则是一行一行的显示。并且IconMode,列表是可以拖动的,ListMode列表是不能拖动的,如果不想让列表拖动,可以设置setMovement(QListView::Static);

添加item:

         //listWidget显示
         QListWidgetItem *newItem = new QListWidgetItem;
         newItem->setIcon(fileIcon->icon(fi));
         newItem->setText(fi.fileName());
         newItem->setData(Qt::UserRole, fi.absoluteFilePath());
         m_listWidget->addItem(newItem);

删除item:

    m_listWidget->removeItemWidget(item);
    delete item;  //必须加上这一句,不然删除不了

QListWidget中IconMode和ListMode的差别

在使用ListMode的时候,你无法通过
ListWidgetItem->setSizeHint(QSize(155,41));
这种方式修改Item的宽度
需要使用IconMode才可以通过setSizeHint函数修改Item的宽度。

QListView是基于Model,而QListWidget是基于Item。这是它们的本质区别。

往QListView中添加条目需借助QAbstractListModel:

如:

    MainWindow::MainWindow(QWidget*parent) :
    QMainWindow(parent),
    ui(new
 Ui::MainWindow)
{

    ui->setupUi(this
);
    QStringListModel* slm=new QStringListModel(this
);
    QStringList* sl=new
 QStringList();
    sl->append(asdfsadfsa
);
    sl->append(asdfsadfsa
);
    sl->append(asdfsadfsa
);
    slm->setStringList(*
sl);
    ui->listView->
setModel(slm);
    delete sl;
}

而在QListWidget中添加条目可以直接additem

如:

 QListWidget list;
  list.setViewMode(QListView::IconMode );//使用图标显示方式
  list.setResizeMode(QListView::Adjust);//设置QListView大小改变时,图标的调整模式,默认是固定的,但可以改成自动调整:
  list.setMovement(QListView::Static);//设置图标可不可以移动,默认是可移动的,但可以改成静态的:
  for(int i =0; i < 100 ; i ++){

  QListWidgetItem *item = new QListWidgetItem(&list);
  QStyle::StandardPixmap sp = (QStyle::StandardPixmap)(i % 57);

  item->setData(Qt::DecorationRole, qApp->style()->standardPixmap(sp).scaled(QSize(16,16), Qt::KeepAspectRatio, Qt::SmoothTransformation) );
  item->setData(Qt::DisplayRole,QObject::tr(“Item %1”).arg(i));
  }

=======================分割线-QT学习之路=======================

 
QListWidget「建议收藏」
 
我们还可以设置viewModel这个参数,来确定使用不同的视图进行显示。比如,我们使用下面的语句:
 
QListWidget「建议收藏」list->setViewMode(QListView::IconMode);
 
再来看看程序界面吧!
 
QListWidget「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134765.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • EXCEL宏编程纪念

    EXCEL宏编程纪念       不久前被叫去编写宏,这EXCEL宏真是麻烦! 可能以后不会再遇到有编写宏的经历了,故而贴出来以做个纪念: Subdirect_Price()query_dir_volume宏由颜清国编写,时间:2007-4-9定义变量DimcRowsAsInteger总行数DimcColumnsAsInteger总列数DimHEADERCOLORINDE

  • 局域网arp断网攻击怎么解决_arp断网攻击连不上网

    局域网arp断网攻击怎么解决_arp断网攻击连不上网   关于局域网断网攻击,顾名思义,就是对局域网内某个IP或全部IP进行攻击,让局域网内某个IP或全部IP断网,这是不是很有趣。   原理:关于arp断网攻击是基于arp协议的缺陷,这其实是arp欺骗的时候配置错误引起的现象。就是以…

  • IntelliJ IDEA Community_集成灶好不好用过的来说一下

    IntelliJ IDEA Community_集成灶好不好用过的来说一下https://blog.csdn.net/u013412790/article/details/71022784 第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!去电脑管理的软件管理里面可以直接下载,方便迅速下载之后直接安装就好了,但是要注意这里的这个文件也要安装上,默认是不安装的,如果不安装,svn中的bin目录下就会没有svn.exe,这个待会会用到,所以一点要注意哦。(都是…

  • “仅三天可见” 的朋友圈有方法破解啦!

    “仅三天可见” 的朋友圈有方法破解啦!点击上方“逆锋起笔”,公众号回复PDF领取大佬们推荐的学习资料之前微博上出现过一个热搜话题:超一亿人朋友圈仅三天可见。微信创始人张小龙在年度演讲里说,这个开关,是微信里使用最多的。很多…

  • DELPHI程序员招聘_招聘java程序员

    DELPHI程序员招聘_招聘java程序员北京地区招聘Delphi程序员,要求工作经验2年以上,熟悉Delphi7+SQL有PB开发经验优先可全职或外派工作地点:西城区六铺炕联系QQ:408390946

  • 安卓反编译_apk可以反编译吗

    安卓反编译_apk可以反编译吗本帖最后由好奇害死猫咪啊于2017-5-621:48编辑本教程为长期更新贴,有问题请及时反馈。如有更新请恕不另行通知。【前言】闲来无事水一贴。。。今天写个教程吧,反编译SystemUI实现状态栏时钟居中。其实说实话本来对华为靠右边的时间不怎么介意的,可一位朋友说什么也想换成类似iPhone的居中式,甚至不惜去刷XP框架,装重力工具箱。。当然了,结果大家可能已经想到了,首先是重力工…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号