学习Qt:VS中提升控件

提升即继承某个控件新建一个新的控件,用于扩展控件功能。

这里通过提升QListWidget,实现一个在list项中鼠标右键弹出上下文弹框的功能。

1、添加一个QtClass,选择你要继承的控件,这里继承QListWidget,命名为SListWidget ;

2、在SListWidget中添加扩展功能;

#pragma once
#include <qlistwidget.h>
#include <QMenu>
#include <QAction>
#include <QContextMenuEvent>

class SListWidget : public QListWidget
{

public:
	SListWidget(QWidget *parent);
	~SListWidget();
	QMenu* m_contextMenu;
	QAction* m_addAction;
	QAction* m_delAction;
protected:
	void mousePressEvent(QMouseEvent* event);
};

#include "SListWidget.h"

SListWidget::SListWidget(QWidget *parent)
	: QListWidget(parent)
{
	m_contextMenu = new QMenu;
	m_addAction = new QAction(u8"添加", this);
	m_delAction = new QAction(u8"删除", this);
	m_contextMenu->addAction(m_addAction);
	m_contextMenu->addAction(m_delAction);
}

SListWidget::~SListWidget()
{
}

void SListWidget::mousePressEvent(QMouseEvent* event)
{
	QListWidget::mousePressEvent(event);
	if (event->button() == Qt::RightButton)
	{
		if (this->itemAt(mapFromGlobal(QCursor::pos())) == NULL)
			return;
		m_contextMenu->exec(event->globalPos());
	}
}

3、打开qt designer,拖拽出一个QListWidget控件,右键“提升的窗口控件”;

 

猜你喜欢

转载自blog.csdn.net/Stone_Wang_MZ/article/details/109300618