2015-08-27 3 views
0

Хорошо, поэтому я пишу немного программного кода (им понравились ребята, которым это нравится) с использованием рамки Qt. Мне любопытно, может ли кто-нибудь там объяснить мне, как работает функция setDevice() в классе объектов QXmlStreamReader. Используя документацию Qt, я пришел к выводу, что он просто определяет, где находится файл, который вы хотите передать; если это так, я смущен тем, почему мне нужно сначала открыть файл, прежде чем взаимодействовать с ним. Я ищу подробное представление о том, как это работает, я знаю, что я должен уметь это понять, но я просто недостаточно разбираюсь в низкоуровневой функциональности на языке C++. Благодарим вас за любое понимание этого, вы действительно поможете мне понять, как работает эта функция, что очень важно для меня.Qt 5.5 setDevice() определение

ответ

1

Класс QXmlStreamReader - это синтаксический анализатор, то есть он может использоваться для любого источника входного сигнала. Следовательно, входной поток может быть быть файлом, но не обязательно. Он также может быть QBuffer, QTextStream, a QDataStream или множеством других подклассов QIODevice. Вам нужно открыть файл перед его передачей в QXmlStreamReader, потому что класс ничего не знает о файлах. Код:

QFile file("somefile"); 
QXmlStreamReader reader; 
if (file.open(QIODevice::ReadOnly)) 
    reader.setDevice(&file); 
else 
    /*FAILURE*/ 
+0

ОК, поэтому вместо того, чтобы иметь разные функции для разных входов, они в основном перегружают этот, чтобы выполнять работу для чего угодно. Думаю, теперь это имеет немного больше смысла. – KingJames