是否有可能(更重要的是 -how-)将输出流重定向到 QTextBox。这样,如果我std::cout << "test"在应用程序中的任何位置写入,它都会被重定向到我定义的文本框?
我尝试了显而易见的(其中 ui.textEdit 是指向文本编辑框的指针):
std::cout.rdbuf(ui.textEdit);
std::cout << "test";
Run Code Online (Sandbox Code Playgroud)
然而这行不通。(明显地)。- 将 cout 重定向到 qDebug 也不起作用(甚至将 qDebug 定向到文本字段)。
我正在使用 qt4.8 顺便说一句...
编辑:所以我尝试了邮件列表中发布的解决方案。但是现在出现了访问冲突。
class MainInterface : public QMainWindow
{
Q_OBJECT
....
private:
QDebugStream qout
Run Code Online (Sandbox Code Playgroud)
使用构造函数:
MainInterface::MainInterface(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags),
qout(std::cout, ui.textEdit)
{
Run Code Online (Sandbox Code Playgroud)
在成员函数中,发布了以下行: std::cout << "Project Loaded" << std::endl;
该行现在会导致来自“qscoped_pointer”的访问冲突。(我应该将更多细节作为单独的问题发布吗?)
编辑:嗯,“解决方案”是在 ui.textEdit 完全创建后才声明 qout 。