QT 自定义QLIstWidgetItem 点击发出信号,并且知道是哪个item

 
 
主要实现功能是:
自定义了 QListWidget 的QListWidgetItem 添加了点击信号 还有点击后 知道点击的item是list的中的第几个 ;
QListWidgetItem 这个类本身没有信号

主界面

/*显示左下方list列表*/
void ImageProcessor::showLeftDown()
{
	
	clearResult(0);
	for (int i=0;i<operatorList.size();i++)
	{
		MyListWidgetItem *pItem = new MyListWidgetItem(operatorList.at(i).output_qimage, operatorList.at(i).operName);
		pItem->setIndex(i);
		QListWidgetItem *listItem1 = new QListWidgetItem();
		
		listItem1->setSizeHint(QSize(150, 215));
		
		ui.listWidgetLeftBottom->addItem(listItem1);
		ui.listWidgetLeftBottom->setItemWidget(listItem1, pItem);//放入自定义的widget
		connect(pItem, SIGNAL(listItemClicked(int)), this, SLOT(clickedLeftItem(int)));//自定义区域添加点击事件的信号槽;连接
	}
}



/*左下角list item点击事件 响应函数*/
void ImageProcessor::clickedLeftItem(int index)
{
 
   Operator selectedoper=operatorList.at(index);
   selectItem = operatorList.at(index);
   showLeftUp(selectedoper);
   showRightTop(selectedoper);


}

 

 

 

MyListWidgetItem.cpp

#include "mylistwidgetitem.hpp"

MyListWidgetItem::MyListWidgetItem(QImage image, QString string)
{
	ui.setupUi(this);
	ui.ImageLabel->setFixedHeight(200);
	ui.ImageLabel->setFixedWidth(150);
	ui.textLabel->setFixedWidth(150);
	ui.textLabel->setFixedHeight(15);
	ui.ImageLabel->setPixmap(QPixmap::fromImage(image).scaled(QSize(150, 200)));
	ui.textLabel->setText(string);
	ui.ImageLabel->setAlignment(Qt::AlignTop);
	ui.ImageLabel->setAlignment(Qt::AlignLeft);

	
	
}

void MyListWidgetItem::setIndex(int ind)
{
	this->index = ind;
}
int MyListWidgetItem::getIndex()
{
	return index; 
}


void MyListWidgetItem::mousePressEvent(QMouseEvent *event)
{

	if (event->button() == Qt::LeftButton)
	{
		emit this->listItemClicked(index);
	}

	


}


MyListWidgetItem::~MyListWidgetItem() 
{
	
}
MyListWidgetItem .hpp:
#ifndef MYLISTWIDGETITEM_H
#define MYLISTWIDGETITEM_H
#include <QWidget>
#include <QMouseEvent>
#include <QIcon>
#include <QImage>
#include <QPixmap>
#include <QLabel>
#include "ui_MyListWidgetItem.h"
class MyListWidgetItem : public QWidget
 {
Q_OBJECT
public:MyListWidgetItem(QImage image, QString string);
~MyListWidgetItem();
void setIndex(int ind);
int getIndex();
void mousePressEvent(QMouseEvent *event);
signals:void listItemClicked(int);
private:Ui::MyListWidgetItem ui;
int index;
};
#endif


 



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值