c++ - Qt 写入 QTextStream 指针

标签 c++ qt pointers stream

我想包含一个文件句柄和流作为我类(class)的私有(private)成员。

class Window : public QMainWindow, private Ui::Window
{
    Q_OBJECT

    public:
    .
    .
    .
    private:
        QFile * outputFile;
        QTextStream * outputFileStream;
};

然后我想在构造函数中初始化句柄和流:

Window::Window(QWidget *parent)
    : QMainWindow(parent)
{
    setupUi(this);
    outputFile = new QFile("/path/to/file.log");
    outputFile->open(QIODevice::WriteOnly | QIODevice::Text);
    outputFileStream = new QTextStream(outputFile);
    *outputFileStream << "=======List=======\n\n";
}

这会创建文件,但不会写入任何内容。但是,当我为 QFile 使用指针而不是 QTextStream 时,它起作用了:

Window::Window(QWidget *parent)
    : QMainWindow(parent)
{
    setupUi(this);
    outputFile = new QFile("/path/to/file.log");
    outputFile->open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream outputFileStream(&outputFile);
    outputFileStream << "=======List=======\n\n";
}

这不是很有用,因为我不能稍后在类的主函数中写入这个流。两者在我看来是等价的,但显然不是。

我对这个实现不满意。如果有人对执行此操作的更好方法(即使用 static 或其他东西)有建议,那也很好。

最佳答案

我通过刷新 outputFileStream 使其与指针一起工作。

关于c++ - Qt 写入 QTextStream 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24412846/

相关文章:

c++ - 为同一类的两个对象绘制不同的图像

java - 遍历深层数据结构并删除对象

c++ - 函数返回的指针地址

指针和 const char[] 的 C 错误

c++ - 准备好的语句可以跨线程共享吗?

c++ - 什么寄存器指向堆?

c++ - 在高维 Xtensor 数组中分配

python - 占位符文本未显示(pyside/pyqt)

c++ - mutex.timed_lock(duration) 和 boost::timed_mutex::scoped_lock 之间的区别 scoped_lock(mutex, duration)

c++ - 在雷达图像上绘制区域而不是点