【问题标题】:Collect user input using qDebug使用 qDebug 收集用户输入
【发布时间】:2014-12-07 01:06:25
【问题描述】:

我一直想知道是否可以使用 Qt C++ 中的qDebug() 语句来收集用户输入。

我尝试像在标准 C++ 代码中那样做:

qDebug() >> myvar;

但它没有用。

我如何使用 Qt 从 stdin 读取信息?

【问题讨论】:

    标签: c++ qt qdebug


    【解决方案1】:

    qDebug 用于输出到stderr。如果你想使用 Qt 从stdin 读取,你应该使用QTextStream

    #include <stdio.h>
    
    QTextStream in(stdin);
    
    QString line;
    in >> line;
    

    【讨论】:

      【解决方案2】:

      不,这是不可能的。 qDebug 仅提供用于调试信息的输出流。

      【讨论】:

        【解决方案3】:

        由于您想使用 QDebug,我认为输入可能是用于调试目的。在这种情况下,如果它是一个 GUI 应用程序,您可以考虑使用QInputDialog 来启动一个模式对话框来获取输入。它有一堆静态的便利方法,但作为一个例子,你可以这样做:

        qDebug() << "before debug input dialog";
        QString debugText = QInputDialog::getText(NULL, "Input debug text", "Your input:");
        qDebug() << "got text" << debugText;
        

        与此的不同之处在于,只需从 stdin 读取,这不会阻塞整个事件循环(它将以通常的模式对话框方式禁用 GUI)。相比之下,从 stdin 简单读取会阻塞整个事件循环。这在调试情况下是否无关紧要,或者您是否特别想要其中一种,取决于事件循环中发生的其他事情(例如网络内容)。但是,如果您将 stdin 用于其他目的,那么这个对话框技巧会非常方便。

        【讨论】:

        • 谢谢你,我想给你一个大拇指,但没有足够的代表,但是谢谢。
        【解决方案4】:

        qDebug 和朋友将文本写入适当的位置。这可以是标准错误,但也可以是系统日志。因此,并非所有qDebug 写入的位置都支持用户输入。但即使他们愿意:Qt 如何确定用户输入是否应该转到qDebugqWarning 或其他其中之一?这是不可能的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-20
          相关资源
          最近更新 更多