gpt4 book ai didi

qt - "file.open(QIODevice::ReadOnly)"是什么意思?

转载 作者:行者123 更新时间:2023-12-04 05:11:57 28 4
gpt4 key购买 nike

我是 Qt 的新手,我正在学习它的 Getting Started页。我想知道以下语句是什么意思,为什么需要它们?

在打开功能中:

if (!file.open(QIODevice::ReadOnly)) {

QMessageBox::critical(this, tr("Error"), tr("Could not open file"));

return;
}

同样在保存功能中:
if (!file.open(QIODevice::WriteOnly)) {
// error message
}

如果没有这些行,我将无法运行这些功能。我尝试阅读文档中的错误处理,但无法准确找到这些语句的含义。

最佳答案

您可以打开文件进行读取和写入。使用 QIODevice::WriteOnlyQIODevice::ReadOnly您指定打开特定文件的模式的标志。

但是,这有什么关系呢?

假设您在不同程序的多个实例中打开了一个文件,并且没有指定文件模式之类的东西。现在,如果每个文件都在读取文件——因为它们都有指向文件当前位置的不同指针——这不是问题——因为所有程序都会从​​文件中获取最新和正确的信息。但是,如果只有一个程序将某些内容写入文件 - 您的数据将不一致,因此其他程序可能会读取错误的数据。

直观的方法是向附加在此文件上的所有程序发送消息,以便它们可以更新自己。但是 - 如果文件被删除怎么办?或者如果没有可能在新数据中设置正确的位置?此外,现在每个程序都需要有接口(interface)才能收到通知,并且整个消息传递的想法可能非常慢(除了它不起作用)。

所以 - 只是达成共识 - 多个程序可以打开文件进行读取 - 因为它们都将具有相同且一致的数据。但是,如果只有一个程序向操作系统发出它想要获得写权限的信号 - 文件不能在任何程序中打开 - 也不能用于读取 - 也不能用于写入!根据实现的不同,操作系统可能会阻塞调用者直到所有文件都关闭,或者它可以简单地忽略调用并将错误信息发送给调用者——这通常是一个更好的主意,因为程序(或用户)可以阻塞自己稍后再试,或者它可以简单地要求用户保存到另一个目的地,或者它可以向我们发送令人毛骨悚然的错误消息 - 但它无法写入文件。

最后一段描述了所谓的多阅读器-单作者技术,因此您可能需要在 Internet 或并发类(class)教科书中查找它。

关于qt - "file.open(QIODevice::ReadOnly)"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14821792/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com