Pyqt5版本:
传输的 字典 类型:
data = {
"imagePath" : "F://Desktop//images//000.png" ,
"result" : "this is a result"
}
新增item
def add_item ( self, data) :
item = QListWidgetItem( )
item. setIcon( QIcon( data[ "imagePath" ] ) )
item. setData( Qt. UserRole, data)
self. listWidget. addItem( item)
连接信号与槽函数
self. listWidget. itemClicked. connect( self. click_item_slot)
槽函数(点击item时触发)
def click_item_slot ( self, item) :
data = item. data( Qt. UserRole)
print ( data[ "imagePath" ] )
C++版本
传递的 map 类型:
map< QString, QString> itemData;
itemData. insert ( pair < QString, QString> ( "imagePath" , "F://Desktop//images//000.png" ) ) ;
itemData. insert ( { "result" , "this is a result" } ) ;
新增item
void bottom:: add_item ( map< QString, QString> itemData) {
QListWidgetItem * item = new QListWidgetItem ( ) ;
item-> setIcon ( QIcon ( itemData[ "imagePath" ] ) ) ;
item-> setData ( Qt:: UserRole, QVariant :: fromValue ( itemData) ) ;
ui. listWidget-> addItem ( item) ;
}
连接信号与槽函数
connect ( ui. listWidget, SIGNAL ( itemClicked ( QListWidgetItem* ) ) , this , SLOT ( item_click_slot ( QListWidgetItem* ) ) ) ;
槽函数(点击item时触发)
void bottom:: item_click_slot ( QListWidgetItem* item)
{
QVariant variant = item-> data ( Qt:: UserRole) ;
map< QString, QString> itemData = variant. value < map< QString, QString>> ( ) ;
for ( auto it = itemData. begin ( ) ; it != itemData. end ( ) ; it++ ) {
pair< QString, QString> a = * it;
qDebug ( ) << "key=" << a. first << " value=" << a. second << endl;
}
}