QIODeviceBase Class

QIODevice 的基类,提供描述设备打开模式的标志。更多

头文件: #include <QIODevice>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
继承者:

QDataStream,QDebug,QIODevice, 以及QTextStream

公共类型

flags OpenMode
enum OpenModeFlag { NotOpen, ReadOnly, WriteOnly, ReadWrite, Append, …, ExistingOnly }

详细说明

成员类型文档

枚举 QIODeviceBase::OpenModeFlag
flags QIODeviceBase::OpenMode

该枚举与QIODevice::open() 一起使用,用于描述设备的打开模式。QIODevice::openMode() 也会返回它。

常量描述
QIODeviceBase::NotOpen0x0000设备未打开。
QIODeviceBase::ReadOnly0x0001设备已打开供读取。
QIODeviceBase::WriteOnly0x0002设备已打开供写入。请注意,对于文件系统子类(如QFile ),除非与只读、追加或只新建相结合,否则该模式意味着截断。
QIODeviceBase::ReadWriteReadOnly | WriteOnly设备为读写模式。
QIODeviceBase::Append0x0004设备以追加模式打开,因此所有数据都会写入文件末尾。
QIODeviceBase::Truncate0x0008如果可能,设备会在打开前被截断。设备之前的所有内容都会丢失。
QIODeviceBase::Text0x0010读取时,行结束符被转换为"\n"。写入时,行结束符将转换为本地编码,例如 Win32 的"\r\n"。
QIODeviceBase::Unbuffered0x0020绕过设备中的任何缓冲区。
QIODeviceBase::NewOnly0x0040如果要打开的文件已经存在,则失败。只有当文件不存在时,才创建并打开文件。操作系统会保证只有你在创建和打开文件。请注意,该模式意味着仅可写入,允许将其与读写结合使用。该标记目前只影响QFile 。其他类将来可能会使用此标记,但在此之前,在QFile 以外的任何类中使用此标记都可能导致未定义的行为。(自 Qt 5.11 起)
QIODeviceBase::ExistingOnly0x0080如果要打开的文件不存在,则失败。此标记必须与只读、只写或读写同时指定。请注意,仅与 ReadOnly 一起使用此标记是多余的,因为当文件不存在时,ReadOnly 已经失败。该标记目前只影响QFile 。其他类将来可能会使用此标记,但在此之前,与QFile 以外的任何类一起使用此标记都可能导致未定义的行为。(自 Qt 5.11 起)

某些标志(如UnbufferedTruncate )在与某些子类一起使用时毫无意义。其中一些限制由子类所代表的设备类型暗示。例如,QTcpSocket 不支持Unbuffered 模式,而本地 API 的限制使得QFile 无法支持 Windows 上的Unbuffered

OpenMode 类型是QFlags<OpenModeFlag> 的类型定义。它存储 OpenModeFlag 值的 OR 组合。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.