• 4861阅读
  • 2回复

[提问]QToolTip中的QTipLabel类为什么要将this指针赋值给一个静态变量? [复制链接]

上一主题 下一主题
离线xiaowei1122
 

只看楼主 倒序阅读 楼主  发表于: 2016-04-20
— 本帖被 XChinux 执行加亮操作(2016-04-20) —
相关源码如下:求教下为什么要这样作,有什么好处么?


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;
}


离线XChinux

只看该作者 1楼 发表于: 2016-04-20
因为,QTipLabel,全局只需要一个。这个控件,在一个地方显示了,其它地方显示的就要消失。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线xiaowei1122

只看该作者 2楼 发表于: 2016-04-21
等于TipLabel这个类实际上是个单例,
new TipLabel;  -----(1)
new TipLabel;  -----(2)


第一次调用new时会创建这个类,第二次调用new时,会删除上次创建的类指针,并且新建个类。
快速回复
限100 字节
 
上一个 下一个