实现 QIODevice 驱动的类
Implement QIODevice driven class
我正在尝试实现一个从QIODevice继承的类。
QT文档说:Subclasses of QIODevice are only required to implement the protected readData() and writeData() functions
我试图创建一个基本的虚拟类,除了打印函数之外没有太多作用,这是代码:
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;
}
};
这是检查类的代码:
dummyClass try_file;
try_file.write("hello to all the good people");
try_file.close();
当我运行代码时,我得到以下输出:
dummyClass ::dummyClass
QIODevice::write (a): device not open
换句话说,发生的情况是类转向原始的 WRITE 函数,而不是像文档所说的那样重定向对 writeData 的调用,而是执行阻碍写入的操作。
谁能告诉我我的错误在哪里?(假设我不想自己实现QIODevice类中的所有READ和WRITE函数(
如果其他人遇到这种情况,QIODevice 会在将会话向前移动到可读和可写的 WRITE 函数之前检查访问权限。 因此,在打开文件的过程中,您必须将对象的OpenMode设置为所需的状态,否则它将使您陷入读写状态。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 实现 QIODevice 驱动的类
- Qt - 重新实现QIODevice,实时听到我自己的声音
- 实现QIODevice::writeData,混淆文档