日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QListWidget自定义item的两种方式(二)——使用QWidget作为item

發(fā)布時(shí)間:2023/12/18 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QListWidget自定义item的两种方式(二)——使用QWidget作为item 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一. 效果

使用QWidget作為QListWidget的Item,測試程序效果如下(下面內(nèi)容包含測試程序源代碼):

?

二. 步驟

使用QWidget作為QListWidget的Item的步驟如下

1. 定義要作為QListWidget的Item的自定義的QWidget

class CItemWidget : public QWidget

2. 創(chuàng)建自定義的QWidget并和QListWidget的Item關(guān)聯(lián)起來

CItemWidget* pItemWidget = new CItemWidget(this); QListWidgetItem* pItem = new QListWidgetItem(); pItem->setSizeHint(QSize(350, 40)); ui->listWidget->addItem(pItem); ui->listWidget->setItemWidget(pItem, pItemWidget);

注意:如果要QListWidget的每行顯示多個(gè)自定義的QWidget,則需進(jìn)行下面的設(shè)置

ui->listWidget->setResizeMode(QListView::Adjust); ui->listWidget->setViewMode(QListView::IconMode);

三. 測試程序及效果

ItemWidget.h

#ifndef ITEMWIDGET_H #define ITEMWIDGET_H#include <QWidget>namespace Ui { class CItemWidget; }class CItemWidget : public QWidget {Q_OBJECTpublic:explicit CItemWidget(QWidget *parent = 0);~CItemWidget();//設(shè)置數(shù)據(jù)void SetData(const QString& qstrFileName, int iFileSize, const QString& qstrPic);private:Ui::CItemWidget *ui;};#endif // ITEMWIDGET_H

ItemWidget.cpp

#include "ItemWidget.h" #include "ui_ItemWidget.h"CItemWidget::CItemWidget(QWidget *parent) :QWidget(parent),ui(new Ui::CItemWidget) {ui->setupUi(this); }CItemWidget::~CItemWidget() {delete ui; }void CItemWidget::SetData(const QString& qstrFileName, int iFileSize, const QString& qstrPic) {ui->label_fileName->setText(qstrFileName);ui->label_fileSize->setText(QString::number(iFileSize));QPixmap pixmapPic(qstrPic);int iWidth = ui->label_pic->width();int iHeight = ui->label_pic->height();QPixmap pixmapPicFit = pixmapPic.scaled(iWidth, iHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);//飽滿填充ui->label_pic->setPixmap(pixmapPicFit); }

MainWidget.h

#ifndef MAINWIDGET_H #define MAINWIDGET_H#include <QWidget>namespace Ui { class CMainWidget; }class CMainWidget : public QWidget {Q_OBJECTpublic:explicit CMainWidget(QWidget *parent = 0);~CMainWidget();private:Ui::CMainWidget *ui;//添加Itemvoid AddItem(const QString& qstrFileName, int iFileSize, const QString& qstrPic); };#endif // MAINWIDGET_H

MainWidget.cpp

#include "MainWidget.h" #include "ui_MainWidget.h" #include "ItemWidget.h"CMainWidget::CMainWidget(QWidget *parent) :QWidget(parent),ui(new Ui::CMainWidget) {ui->setupUi(this);ui->listWidget->setResizeMode(QListView::Adjust);ui->listWidget->setViewMode(QListView::IconMode);AddItem("Video1", 1024, ":/images/video_1.png");AddItem("Video2", 2048, ":/images/video_2.png");AddItem("Video3", 3072, ":/images/video_3.png");AddItem("Video4", 4096, ":/images/video_4.png");AddItem("Video5", 5120, ":/images/video_1.png"); }CMainWidget::~CMainWidget() {delete ui; }void CMainWidget::AddItem(const QString& qstrFileName, int iFileSize, const QString& qstrPic) {CItemWidget* pItemWidget = new CItemWidget(this);pItemWidget->SetData(qstrFileName, iFileSize, qstrPic);QListWidgetItem* pItem = new QListWidgetItem();pItem->setSizeHint(QSize(350, 40));ui->listWidget->addItem(pItem);ui->listWidget->setItemWidget(pItem, pItemWidget); }

main.cpp

#include "MainWidget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);CMainWidget w;w.show();return a.exec(); }

程序運(yùn)行效果如下:

?

?

相關(guān)資料:

QListWidget自定義item的兩種方式(一)——使用Delegate

自定義QWidget作為QListWidget的Item時(shí)偶爾出現(xiàn)位置偏移問題的解決方法和原理

?

?

?

總結(jié)

以上是生活随笔為你收集整理的QListWidget自定义item的两种方式(二)——使用QWidget作为item的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。