QListWidget自定义item的两种方式(二)——使用QWidget作为item
生活随笔
收集整理的這篇文章主要介紹了
QListWidget自定义item的两种方式(二)——使用QWidget作为item
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一. 效果
使用QWidget作為QListWidget的Item,測試程序效果如下(下面內容包含測試程序源代碼):
?
二. 步驟
使用QWidget作為QListWidget的Item的步驟如下
1. 定義要作為QListWidget的Item的自定義的QWidget
class CItemWidget : public QWidget2. 創建自定義的QWidget并和QListWidget的Item關聯起來
CItemWidget* pItemWidget = new CItemWidget(this); QListWidgetItem* pItem = new QListWidgetItem(); pItem->setSizeHint(QSize(350, 40)); ui->listWidget->addItem(pItem); ui->listWidget->setItemWidget(pItem, pItemWidget);注意:如果要QListWidget的每行顯示多個自定義的QWidget,則需進行下面的設置
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();//設置數據void SetData(const QString& qstrFileName, int iFileSize, const QString& qstrPic);private:Ui::CItemWidget *ui;};#endif // ITEMWIDGET_HItemWidget.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_HMainWidget.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(); }程序運行效果如下:
?
?
相關資料:
QListWidget自定義item的兩種方式(一)——使用Delegate
自定義QWidget作為QListWidget的Item時偶爾出現位置偏移問題的解決方法和原理
?
?
?
總結
以上是生活随笔為你收集整理的QListWidget自定义item的两种方式(二)——使用QWidget作为item的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GAE的使用
- 下一篇: 安装和配置Oracle10g详细教程