我经常想使用 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/