在一个项目中是自定义记录器,我想将其扩展为像 qDebug() 那样写入枚举值。有一些简单的方法吗?
这是我认为可能有用的东西(但它没有):
template <typename T>
typename QtPrivate::QEnableIf<QtPrivate::IsQEnumHelper<T>::Value, std::ostream>::Type
operator<<(std::ostream& os, T enumValue)
{
const QMetaObject* mo = qt_getEnumMetaObject(enumValue);
int enumIdx = mo->indexOfEnumerator(qt_getEnumName(enumValue));
return os << mo->enumerator(enumIdx).valueToKey(enumValue);
}
class MyObjet : public QObject
{
Q_OBJECT
public:
enum class Action { Open, Save, New, Copy, Cut, Paste, Undo, Redo, Delete };
Q_ENUM(Action)
explicit MyObjet(QObject* parent);
void myFunction(Action a)
{
std::count << "Action is:" << a << std::endl;
}
};