redirect the std::cout to QtTextEdit

Steps:

1. Create a class that inherit std::basic_streambuf

2. Override overflow() function.



Sample codes:

Header 

class myos : public std::basic_streambuf<char, char_traits<char> > 
{
    typedef char_traits<char> _Traits;
public:
    myos(QTextEdit* e);
public:
    ~myos(void);
protected:
    virtual int_type __CLR_OR_THIS_CALL overflow(int_type _Meta = _Traits::eof());


    virtual int_type __CLR_OR_THIS_CALL pbackfail(int_type _Meta = _Traits::eof());


    virtual int_type __CLR_OR_THIS_CALL underflow();


    virtual pos_type __CLR_OR_THIS_CALL seekoff(off_type _Off,
        ios_base::seekdir _Way,
        ios_base::openmode _Which = ios_base::in | ios_base::out);


    virtual pos_type __CLR_OR_THIS_CALL seekpos(pos_type _Ptr,
        ios_base::openmode _Mode = ios_base::in | ios_base::out);


private:
    QTextEdit* _editor;
};


Source:

myos::myos(QTextEdit* e):_editor(e)
{
}


myos::~myos(void)
{
}


myos::int_type myos::overflow(myos::int_type _Meta )
{ 
    _editor->insertPlainText(QString(char(_Meta)));
    return (_Meta);
}


myos::int_type myos::pbackfail(myos::int_type _Meta )
{ // put an element back to stream
    return _Meta;
}


myos::int_type myos::underflow()
{ 
    return 0;
}


myos::pos_type myos::seekoff(myos::off_type _Off,
                                            ios_base::seekdir _Way,
                                            ios_base::openmode _Which )
{ // change position by _Off, according to _Way, _Mode
    return 0;
}


myos::pos_type myos::seekpos(myos::pos_type _Ptr,
                                            ios_base::openmode _Mode )
{ // change position to _Pos, according to _Mode


    return (std::streampos(0));
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值