首页| 论坛| 消息

标题:QToolTip中的QTipLabel类为什么要将this指针赋值给一个静态变量?
作者:xiaowei1122
日期:2016-04-20 17:51
内容:

相关源码如下:求教下为什么要这样作,有什么好处么?


class QTipLabel : public QLabel
{
Q_OBJECT
public:
QTipLabel(const QString &text, QWidget *w);
~QTipLabel();
static QTipLabel *instance;
}

QTipLabel *QTipLabel::instance = 0;

QTipLabel::QTipLabel(const QString &text, QWidget *w)
#ifndef QT_NO_STYLE_STYLESHEET
: QLabel(w, Qt::ToolTip | Qt::BypassGraphicsProxyWidget), styleSheetParent(0), widget(0)
#else
: QLabel(w, Qt::ToolTip | Qt::BypassGraphicsProxyWidget), widget(0)
#endif
{
delete instance;
instance = this;
}

QTipLabel::~QTipLabel()
{
instance = 0;
}


#1 [XChinux 04-20 20:27]
因为,QTipLabel,全局只需要一个。这个控件,在一个地方显示了,其它地方显示的就要消失。
#2 [xiaowei1122 04-21 10:32]
等于TipLabel这个类实际上是个单例,
new TipLabel;-----(1)
new TipLabel;-----(2)

第一次调用new时会创建这个类,第二次调用new时,会删除上次创建的类指针,并且新建个类。

回复 发表
主题 版块