// 在item中添加一个lable 和 按钮
QWidget *widget1 = new QWidget(ui->listWidget);
QHBoxLayout *layout = new QHBoxLayout(widget1);
QLabel *lab1 = new QLabel(widget1);
QLabel *lab2 = new QLabel(widget1);
layout->addWidget(lab1);
layout->addWidget(lab2);
layout->addWidget(btn1);
lab1->setText(str);
lab2->setText("aaa");
btn1->setObjectName(QStringLiteral("button1")); // 设置按钮名称
lab1->setObjectName(QStringLiteral("label1")); // 设置label名称
lab2->setObjectName(QStringLiteral("label2")); // 设置label名称
btn1->setText(tr("测试按钮"));
widget1->setLayout(layout);
// 添加自定义的item
QListWidgetItem *aItem = new QListWidgetItem(ui->listWidget);
ui->listWidget->addItem(aItem);
aItem->setSizeHint(QSize(0,50));
ui->listWidget->setItemWidget(aItem,widget1);
2. 用鼠标" 单击" 获取自定义控件的信息
1. 通过选中的item, 获取里面的QWidget
QWidget* pwig = ui->listWidget->itemWidget(item);
2. 从得到的widget上的找到需要的子控件
方法一: QList<QLabel*> labelList = pwig->findChildren<QLabel*>();
方法二: QLabel * label = pwig->findChild<QLabel *>("label2");
void ListWidgetTest::on_listWidget_itemClicked(QListWidgetItem *item)
QWidget* pwig = ui->listWidget->itemWidget(item); // 获取里面的QWidget
if (pwig != NULL)
// 方法一 获取所有
QList<QLabel*> labelList = pwig->findChildren<QLabel*>(); // 获取所有的Qlabel
foreach(QLabel *label, labelList)
qDebug()<< label->text();
if(label->objectName() == "label1")
ui->checkText->setText(label->text()); // 获取表中的值
// 方法二 findChild获取一个,如果不带参数返回第一个子控件
QLabel * label = pwig->findChild<QLabel *>("label2");
ui->checkText->setText(label->text()); // 获取表中的值
ui->checkText->setText(item->text()); // 获取表中的值
// 修改里面的内容
// QLabel * label = pwig->findChild<QLabel *>(); // 只有一个label 可以用 findchild
// label->setText(tr("内容已修改"));
itemAt方法根据参数给定位置返回列表部件中的项。对应语法如下:
QListWidgetItem itemAt(QPoint p)
QListWidgetItem itemAt(int x, int y)
注意:位置对应坐标是相对列表部件的视口的,关于视口请参考《PyQt(Python+Qt...
显示文件夹下的图片这个功能,这里是增加了一个按钮作为响应的,通过信号和槽函数使另一个QListWidget显示图片,当然也可以直接使用QListWidget里是函数直接做跳转。这里使用了两个QListWidget,左边的用做显示文件信息,右边的做显示文件夹下的图片,这里的图片是保存的拍摄视频的第一帧,通过双击显示图片,点机打开视频可以查看视频。这里的按钮函数逻辑是:清空窗口,获取选中的成员信息,访问该成员文件夹下内容,遍历所有的图片文件,保存到容器中,在显示容器中内容。本期文章就到这了下期见了!
我这里用的QListWidegtItem,为了点击QListWidget对应内容是获取路径,进行刷新操作,类似需求还有很多,故需要给item存储数据方便使用。
常见接口:
存储数据:setData(); setItemData(); setUserData();
获取数据:data(); itemData(); userData();
首先是最简单的使用setData()单独存储已有数据类型结构
QListWidget* list_widget = new QListWidget;
// 添加item时
Qt提供QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。一般列表框控件中的列表项有两种加载方式:
一种是由用户手动添加的列表项,比如音乐播放器中加载音乐文件的文件列表,每一个音乐文件都是一个列表项。
对于这种列表项,用户可以进行增加、删除、单击以及双击等操作。
一种是由程序员事先编写好,写在程序中供用户选择的列表项,比如餐厅的电子菜单,每一道菜对应一个列表项。
对于这种列表项,用户可以进行单机和双击操作(增加和删除操作也是可以进行的,但是一般的点菜系
1 应用场景
在QListWidget中插入自定义的图片,并且按照相似度进行自动排序。和QListWidget中插入QListWidgetItem,然后调用setItemWidge...
Qt 中用于项(Item)处理的组件有两类,一类是 Item Views,包括 QListView、QTreeView、 QTableView、QColumnView 等;另一类是 Item Widgets,包括 QListWidget、QTreeWidget 和 QTable Widget。QListWidget其实是QListView的遍历类,QListView 是基于模型/视图(Model/View)结构,视图(View)与模型数据(Model Data)关联实现数据的显示和编辑;而QLis
void dropEvent(QDropEvent *event) Q_DECL_OVERRIDE;
void dragEnterEvent(QDragEnterEvent*event) Q_DECL_OVERRIDE;
void dragMoveEvent(QDragMoveEvent *event) Q_DECL_OVERRIDE;
这里要注意,如果少了dragMoveEvent的话dropEvent不会被激发。
void MyListW
QListWidget类提供基于项目列表的小部件。
QListWidget提供类似于QListView提供的列表视图,但具有用于添加和删除项的经典的界面。 QListWidget使用内部模型来管理列表中的每个QListWidgetItem...
QListView *pListView = new QListView();
QStringListModel *pStringlistModel = new QStringListModel();
pStringl
有时间会遇到这样的需求,显示scene上的所有节点,或者某个区域的节点,有人推荐使用QGraphics::fitInView这个函数,但是这个函数会根据你所给的QRect的大小来进行横向或者纵向的拉升,会使item变形,不建议使用。
在网上看到这样的办法,推荐使用:
float calc_full_scale()
float dx = viewport()->geometry...