Qt中自定义及控制qDebug的输出

在我们把自己的函数封装成库,然后给别人用时,别人很可能会看到我们库中使用qDebug()打印出来的信息。
这些信息一方面会干扰别人自己的输出,另一方面也会暴露自己库的一些细节。但是有时候又的确需要这些信息。
因此,最好有个开关来控制自己库的信息的打印。
这里,我是自己实现了一个debug类,用法也是类似qDebug()那样。仅供参考

class ZyDebugPrivate{

public:
    ZyDebugPrivate(QDebug *debug)
    {
        mDebug = debug;
    }

    template<typename T>
    ZyDebugPrivate &operator << (T value)
    {
        if(enablePrint == false)
        {
           QNoDebug() << value;
//           Q_UNUSED(var);
        }
        else
        {
            if(mFirst)
            {
               mDebug->noquote() << QString("DynVision[%1]:").arg(QTime::currentTime().toString("hh:mm:ss.zzz")) << value;
            }
            else
            {
               *mDebug << value;
            }
        }

        mFirst = false;

        return *this;
    }

public:
    static bool enablePrint;

private:
    bool mFirst = true;
    QDebug *mDebug;
};
bool ZyDebugPrivate::enablePrint = true;
#define ZyDebug() ZyDebugPrivate(&qDebug())

使用:

    ZyDebug() << "123" << "-----" << 78989;

输出信息为:

DynVision[16:20:4545.455]: 123 ----- 78989

假如需要关闭输出:

ZyDebugPrivate::enablePrint = false;

你可能感兴趣的:(Qt相关,qt)