qDebug() 取消输出会自动换行
时间: 2023-07-04 10:05:23 浏览: 145
不是的,qDebug() 取消输出不会自动换行。如果想要取消输出换行,可以使用 << 操作符连接字符串,并在最后添加空格。例如:
```cpp
qDebug() << "This is a message without a new line ";
```
这样输出的内容就不会换行了。
相关问题
qDebug() 取消自动换行
在 Qt 中,可以使用 `qSetMessagePattern()` 函数来设置调试信息的输出格式。你可以在输出格式中添加 `%{if-category}%{message}\n%{endif}` 来取消自动换行。示例代码如下:
```cpp
#include <QDebug>
int main()
{
// 设置调试信息的输出格式
qSetMessagePattern("%{if-category}%{message}\n%{endif}");
qDebug() << "Hello, world!";
qDebug() << "This is a long message that should not be wrapped.";
return 0;
}
```
输出结果如下:
```
Hello, world!
This is a long message that should not be wrapped.
```
qDebug() 取消结尾自动换行
在 Qt 中,可以通过设置默认消息处理程序来取消 qDebug() 的结尾自动换行。具体做法如下:
```cpp
#include <QtDebug>
void myMessageOutput(QtMsgType type, const QMessageLogContext& context, const QString& msg)
{
QString txt;
switch (type) {
case QtDebugMsg:
txt = QString("Debug: %1").arg(msg);
break;
case QtWarningMsg:
txt = QString("Warning: %1").arg(msg);
break;
case QtCriticalMsg:
txt = QString("Critical: %1").arg(msg);
break;
case QtFatalMsg:
txt = QString("Fatal: %1").arg(msg);
break;
}
// 取消结尾自动换行
QTextStream(stdout, QIODevice::WriteOnly) << txt << endl;
}
int main(int argc, char *argv[])
{
qInstallMessageHandler(myMessageOutput);
// ...
return 0;
}
```
在上面的代码中,我们首先定义了一个新的消息处理程序 `myMessageOutput()`,然后通过 `qInstallMessageHandler()` 函数将其设置为默认消息处理程序。在 `myMessageOutput()` 函数中,我们对不同类型的消息进行了不同的处理,并使用 `QTextStream` 类将消息输出到控制台。注意,我们在输出消息之后并没有调用 `endl`,这样就可以取消结尾自动换行了。