Хорошо, поэтому я пишу немного программного кода (им понравились ребята, которым это нравится) с использованием рамки Qt. Мне любопытно, может ли кто-нибудь там объяснить мне, как работает функция setDevice()
в классе объектов QXmlStreamReader
. Используя документацию Qt, я пришел к выводу, что он просто определяет, где находится файл, который вы хотите передать; если это так, я смущен тем, почему мне нужно сначала открыть файл, прежде чем взаимодействовать с ним. Я ищу подробное представление о том, как это работает, я знаю, что я должен уметь это понять, но я просто недостаточно разбираюсь в низкоуровневой функциональности на языке C++. Благодарим вас за любое понимание этого, вы действительно поможете мне понять, как работает эта функция, что очень важно для меня.Qt 5.5 setDevice() определение
0
A
ответ
1
Класс QXmlStreamReader
- это синтаксический анализатор, то есть он может использоваться для любого источника входного сигнала. Следовательно, входной поток может быть быть файлом, но не обязательно. Он также может быть QBuffer
, QTextStream
, a QDataStream
или множеством других подклассов QIODevice
. Вам нужно открыть файл перед его передачей в QXmlStreamReader
, потому что класс ничего не знает о файлах. Код:
QFile file("somefile");
QXmlStreamReader reader;
if (file.open(QIODevice::ReadOnly))
reader.setDevice(&file);
else
/*FAILURE*/
ОК, поэтому вместо того, чтобы иметь разные функции для разных входов, они в основном перегружают этот, чтобы выполнять работу для чего угодно. Думаю, теперь это имеет немного больше смысла. – KingJames