大家好,又见面了,我是你们的朋友全栈君。
东西不能知道拿来用,但可以借鉴效果
简单版
QListWidget *list=new QListWidget;
QListWidgetItem *item=new QListWidgetItem(list,0);
item->setSizeHint(QSize(100,100));
QWidget *w = new QWidget(list);
QHBoxLayout *layout=new QHBoxLayout(w);
QPushButton *pushButton=new QPushButton(w);
QCheckBox *checkBox=new QCheckBox(w);
layout->addWidget(checkBox);
layout->addWidget(pushButton);
w->setLayout(layout);
w->show();
list->setItemWidget(item,w);
list->show();
复杂版
QWidget *widget = new QWidget(ui.listWidget);
//创建自定义的item
widget->setStyleSheet(“background:transparent;”);
QLabel *TypeLabel = new QLabel(widget);
QPixmap myPix(qexeFullPath + QStringLiteral(“/../res/DataBase/Common/”) + GetFileType(filename) + “.png”);
TypeLabel->setFixedSize(62, 32);
TypeLabel->setPixmap(myPix);
TypeLabel->setScaledContents(true);
TypeLabel->setStyleSheet(“QLabel{padding-left:15px;padding-right:15px;}”);
QWidget *frontArea = new QWidget(widget);
frontArea->setFixedHeight(32);
QLabel *TextLabel = new QLabel(frontArea);
TextLabel->setText(filename);
QLabel *TotalCopyLabel = new QLabel(frontArea);
TotalCopyLabel->setText(“0 KB/0 KB”);
QWidget *backArea = new QWidget(widget);
backArea->setFixedSize(158, 32);
QProgressBar *ProgressBar = new QProgressBar(backArea);
ProgressBar->setTextVisible(false);
ProgressBar->setFixedHeight(12);
ProgressBar->setStyleSheet(“QProgressBar{ border:none; background:rgb(230, 230, 230); border-radius:0px; text-align:center; color:gray }\
QProgressBar::chunk{ background:rgb(71, 137, 250); border-radius:0px; }”);
QLabel *SpeedLabel = new QLabel(backArea);
SpeedLabel->setText(“0 B/s”);
QPushButton *OpenFolderButton = new QPushButton(widget);
OpenFolderButton->setToolTip(QStringLiteral(“打开文件夹”));
OpenFolderButton->setFixedSize(82, 32);
QIcon icon3(qexeFullPath + QStringLiteral(“/../res/DataBase/Common/文件夹.png”));
OpenFolderButton->setIcon(icon3);
OpenFolderButton->setIconSize(QSize(24, 24));
OpenFolderButton->setProperty(“index”, QString::number(currentIndex));
OpenFolderButton->setStyleSheet(“QPushButton{ margin-left:25px;margin-right:25px;border:none; color:white; background:none; }QPushButton:hover{color:#FFFFFF; background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 0% ), stop:1 rgba(200, 200, 200, 60% )); }\
QPushButton:pressed{ color:white; background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 0% ), stop:1 rgba(200, 200, 200, 80% )); }”);
connect(OpenFolderButton, SIGNAL(clicked()), this, SLOT(OpenFolder()));
QLabel *TipIconLabel = new QLabel(widget);
QPixmap myPix2(qexeFullPath + QStringLiteral(“/../res/DataBase/Common/等待.png”));
TipIconLabel->setFixedSize(25, 20);
TipIconLabel->setPixmap(myPix2);
TipIconLabel->setScaledContents(true);
TipIconLabel->setStyleSheet(“QLabel{padding-left:0px;padding-right:5px;}”);
QLabel *TipTextLabel = new QLabel(widget);
TipTextLabel->setText(QStringLiteral(“等待中”));
TipTextLabel->setStyleSheet(“QLabel{padding-left:0px;padding-right:0px;}”);
TipTextLabel->setFixedWidth(55);
QPushButton *CloseButton = new QPushButton(widget);
CloseButton->setToolTip(QStringLiteral(“取消下载”));
CloseButton->setFixedSize(34, 24);
QIcon icon4(qexeFullPath + QStringLiteral(“/../res/DataBase/Common/关闭.png”));
CloseButton->setIcon(icon4);
CloseButton->setIconSize(QSize(12, 12));
CloseButton->setProperty(“index”, QString::number(currentIndex));
CloseButton->setStyleSheet(“QPushButton{ margin-left:0px;margin-right:10px;border:none; color:white; background:none; }QPushButton:hover{color:#FFFFFF; background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 0% ), stop:1 rgba(200, 200, 200, 60% )); }\
QPushButton:pressed{ color:white; background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 0% ), stop:1 rgba(200, 200, 200, 80% )); }”);
connect(CloseButton, SIGNAL(clicked()), this, SLOT(HideItem()));
QVBoxLayout *verLayout = new QVBoxLayout;
verLayout->setContentsMargins(0, 0, 0, 0);
verLayout->setMargin(0);
verLayout->setSpacing(0);
verLayout->addWidget(TextLabel);
verLayout->addWidget(TotalCopyLabel);
frontArea->setLayout(verLayout);
QVBoxLayout *verLayout2 = new QVBoxLayout;
verLayout2->setContentsMargins(0, 0, 0, 0);
verLayout2->setMargin(0);
verLayout2->setSpacing(0);
verLayout2->addWidget(ProgressBar);
verLayout2->addWidget(SpeedLabel);
backArea->setLayout(verLayout2);
QHBoxLayout *horLayout = new QHBoxLayout;
horLayout->setContentsMargins(0, 0, 0, 0);
horLayout->setMargin(0);
horLayout->setSpacing(0);
horLayout->addWidget(TypeLabel);
horLayout->addWidget(frontArea);
horLayout->addWidget(backArea);
horLayout->addWidget(OpenFolderButton);
horLayout->addWidget(TipIconLabel);
horLayout->addWidget(TipTextLabel);
horLayout->addWidget(CloseButton);
widget->setLayout(horLayout);
//将widget作为列表的item
QListWidgetItem *ITEM = new QListWidgetItem();
QSize size = ITEM->sizeHint();
ITEM->setSizeHint(QSize(size.width(), 56));
ui.listWidget->addItem(ITEM);
widget->setSizeIncrement(size.width(), 56);
ui.listWidget->setItemWidget(ITEM, widget);
复杂版效果图:
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134944.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...