QListWidget添加自定義的widget並自動排序


自己開發了一個股票智能分析軟件,功能很強大,需要的點擊下面的鏈接獲取:

https://www.cnblogs.com/bclshuai/p/11380657.html

1.問題描述

項目中需要添加自定義的widget,有圖片文字和按鈕,如下圖所示,但是Qlistwidget常規只能添加圖片加文字,就需要自定義一個widget上面添加內容,並且自動按照相似度排序。

 

 

 2.實現步驟

(1)自定義widgetItem界面

 

 

 

(2)定義類去實現這個界面

//頭文件
#ifndef COMPAREVIEW_H #define COMPAREVIEW_H #include <QWidget> #include "ui_CompareView.h" #include <QImage> #include"FaceDefine.h" class CompareView : public QWidget { Q_OBJECT public: CompareView(MatchData matchData); ~CompareView(); private: Ui::MatchWidget ui; MatchData m_matchData; }; #endif // COMPAREVIEW_H //源文件 #include "CompareView.h" CompareView::CompareView(MatchData matchData) { ui.setupUi(this); setWindowFlags(Qt::FramelessWindowHint); this->resize(120, 120); m_matchData = matchData; ui.MatchPercent->setText(QString::number(m_matchData.matchPercent*100)+"%"); QPixmap pix(matchData.strTargetPath); pix = pix.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); ui.PicTarget->setPixmap(pix); } CompareView::~CompareView() { }

(3)定義往里面添加的函數

int FaceMatch::AddToMatchList(MatchData matchData)
{
	CompareView* cItemWidget = new CompareView(matchData);//新建widget對象
	QListWidgetItem* pItem = new QListWidgetItem(QString::number(matchData.matchPercent));//新建listwidget的一個item
	pItem->setData(257, matchData.matchPercent);//設置相似度,方便按照相似度排序
	pItem->setTextAlignment(Qt::AlignCenter);//設置居中顯示
	pItem->setSizeHint(QSize(130, 130));//設一項的大小
	ui.listMatchWidget->addItem(pItem);//加入listwidget
	ui.listMatchWidget->setItemWidget(pItem, cItemWidget);//將新建的widget加入到item中
	ui.listMatchWidget->sortItems(Qt::DescendingOrder);//自動排序
	ui.labelMatchCount->setText(QString::number(ui.listMatchWidget->count()));//設置總的數量
	return HPR_OK;
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM