gpt4 book ai didi

qt - qDebug() 如何打印枚举值?

转载 作者:行者123 更新时间:2023-12-04 01:29:44 25 4
gpt4 key购买 nike

我们的应用程序中有一段简单的代码:

void tAccessPoint::OnStateChanged(QAbstractSocket::SocketState state)
{
qDebug() << m_ID << " " << state;

由于这里不重要的原因,我试图替换 qDebug 的使用,所以我使用了这篇文章中的代码 C++ format macro / inline ostringstream .但我很惊讶地发现,当我这样做时 状态不再显示为文本值,而是显示为数字值。 qDebug() 似乎知道枚举值的名称,而不仅仅是值。它是如何做到这一点的,我可以在我的代码中做到这一点吗?

最佳答案

这里没有 moc 魔法,QtNetwork 在 network/socket/qabstractsocket.h 中明确定义了操作符:

QDebug operator<<(QDebug, QAbstractSocket::SocketState) {
switch (state) {
case QAbstractSocket::UnconnectedState:
debug << "QAbstractSocket::UnconnectedState";
break;
case QAbstractSocket::HostLookupState:
debug << "QAbstractSocket::HostLookupState";
break;
case QAbstractSocket::ConnectingState:
debug << "QAbstractSocket::ConnectingState";
break;
case QAbstractSocket::ConnectedState:
debug << "QAbstractSocket::ConnectedState";
break;
case QAbstractSocket::BoundState:
debug << "QAbstractSocket::BoundState";
break;
...
return debug;
}

但是你可以使用 QDebug将数据发送到 QString在你的函数中:
 QString output;
QDebug(&output) << ...

关于qt - qDebug() 如何打印枚举值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com