首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现QIODevice驱动的类

实现QIODevice驱动的类
EN

Stack Overflow用户
提问于 2018-06-18 23:31:46
回答 1查看 111关注 0票数 0

我正在尝试实现一个继承自QIODevice的类。

QT文档是这样写的:Subclasses of QIODevice are only required to implement the protected readData() and writeData() functions

我试图创建一个基本的虚拟类,它除了打印函数之外不做太多的事情,下面是代码:

代码语言:javascript
复制
class dummyClass : public QIODevice
{
    Q_OBJECT
    Q_DISABLE_COPY(dummyClass)

public:
    explicit dummyClass( QObject *parent = 0): QIODevice(parent)
    {
        qDebug() << __FUNCTION__ <<endl;
    }

protected:
    qint64 readData(char *data, qint64 len)
    {
        qDebug() << __FUNCTION__ <<endl;
        return 0;
    }

    qint64 writeData(const char *data, qint64 maxSize)
    {
        qDebug() << __FUNCTION__ <<endl;
        return 0;
    }

};

这是检查类的代码:

代码语言:javascript
复制
dummyClass try_file;
try_file.write("hello to all the good people");
try_file.close();

当我运行代码时,我得到以下输出:

代码语言:javascript
复制
dummyClass ::dummyClass 
QIODevice::write (a): device not open

换句话说,发生的情况是,类转向原始的写入函数,而不是像文档中所说的那样将调用重定向到writeData,而是执行阻碍写入的操作。

谁能告诉我我的错误在哪里?(假设我不想自己实现QIODevice类中的所有读写函数)

EN

回答 1

Stack Overflow用户

发布于 2018-06-18 23:39:53

如果其他任何人遇到这种情况,QIODevice会在将会话向前移动到可读和可写的写函数之前检查访问权限。因此,在打开文件的过程中,您必须将对象setOpenMode到所需的状态,否则它将使您处于读写状态。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50912909

复制
相关文章

相似问题

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