可编辑的QLabel主要是用于某些填字游戏,例如数独,具体的实现是通过在QStackedWidget切换QLabel和QLineEdit来实现的,代码也非常的简单,具体怎么用还需要自己添加新的内容
QEditLabel.h
#pragma once
#include <QStackedWidget>
#include <QLabel>
#include <QLineEdit>
#include <QEvent>
#include <QObject>
class QEditLabel : public QWidget {
Q_OBJECT
public:
QEditLabel(QWidget *parent = Q_NULLPTR);
protected:
bool eventFilter(QObject * obj, QEvent * e);
private:
QStackedWidget * m_stackWidget;
QLabel * m_label;
QLineEdit * m_lineEdit;
private:
void initCtrls(void);
};
QEditLabel.cpp
#include "QEditLabel.h"
QEditLabel::QEditLabel(QWidget *parent)
: QWidget(parent) {
initCtrls();
}
bool QEditLabel::eventFilter(QObject * obj, QEvent * e) {
if (obj == m_label) {
if (QEvent::FocusIn == e->type()) {
m_stackWidget->setCurrentWidget(m_lineEdit);
}
}
else i