c++ - 通过 QTextStream 流式传输到 QTextEdit

标签 c++ qt qt4 qtextedit

我经常想使用 QTextEdit 来快速显示正在写的内容 到一个流。也就是说,而不是写入 QTextStream out(stdout),我想要 做类似的事情:

 QTextEdit qte; 
 QTextStream out(qte);  

如果我在写入 QTextStream 后发出信号,我可以做类似的事情 附加到 QString。
问题是我希望界面是 就像我流式传输到 stdout 等一样:

out << some data << endl;

关于如何实现这一点有什么想法吗?

提前致谢。

最佳答案

您可以创建一个输出到 QTextEdit 的 QIODevice。

class TextEditIoDevice : public QIODevice 
{
    Q_OBJECT

public:
    TextEditIoDevice(QTextEdit *const textEdit, QObject *const parent) 
        : QIODevice(parent)
        , textEdit(textEdit)
    {
        open(QIODevice::WriteOnly|QIODevice::Text);
    }

    //...

protected:
    qint64 readData(char *data, qint64 maxSize) { return 0; }
    qint64 writeData(const char *data, qint64 maxSize)
    {
        if(textEdit)
        {
            textEdit->append(data);
        }
        return maxSize;
    }

private:
    QPointer<QTextEdit> textEdit;
};


// In some dialogs constructor
QTextStream  ss(new TextEditIoDevice(*ui.textEdit, this));
ss <<  "Print formatted text " <<hex << 12 ;
// ...

关于c++ - 通过 QTextStream 流式传输到 QTextEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2350940/

相关文章:

c++ - 重载 = 运算符

c++ - Oracle Golden Gate 用户导出 - EXIT_CALL_PROCESS_RECORD 未通过

c++ - 如何在 x64 平台上使用 HTMLHelpCtrl.ocx ActiveX 控件

ios - 单击主屏幕中的应用程序图标时获取 IOS 解析有效负载数据

c++ - QAxObject Excel 工作表 -- 为整个 Excel 工作表设置默认字体

python - Qt : How to render 3D animation shapes over a camera video stream?

c++ - Shell 脚本执行 - 错误处理

c++ - 如何设置整数的前三个字节?在 C++ 中

c++ - C++中operator[]()一定要是成员函数吗?

qt - 使用QFile将换行符转换为文本文件