首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过QTextStream流式传输到QTextEdit

通过QTextStream流式传输到QTextEdit
EN

Stack Overflow用户
提问于 2010-02-28 19:54:07
回答 2查看 5.9K关注 0票数 4

我经常想使用QTextEdit作为一种快速显示正在写入流的内容的方法。也就是说,我不想写到QTextStream out(标准输出),而是想要这样做:

代码语言:javascript
复制
 QTextEdit qte; 
 QTextStream out(qte);  

如果我在写入连接到QString的QTextStream之后发出信号,我也可以做类似的事情。

问题是,我希望界面与我流式传输到stdout等文件时的界面相同:

代码语言:javascript
复制
out << some data << endl;

你知道我该怎么完成这件事吗?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-28 23:18:58

您可以将QTextEdit子类化并实现<<操作符,以便为其提供所需的行为;如下所示:

代码语言:javascript
复制
class TextEdit : public QTextEdit {
    .../...
    TextEdit & operator<< (QString const &str) {
        append(str);

        return *this;
    }
};
票数 2
EN

Stack Overflow用户

发布于 2010-03-01 17:19:31

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

代码语言:javascript
复制
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 ;
// ...
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2350940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档