1

Qt で .vcproj ファイルを解析する必要があります。このファイルは実際には xml ファイルと次のようになります。

<?xml version="1.0" encoding="windows-1251"?>
<VisualStudioProject...>
    <Platforms>
        <Platform
            Name="Win32"
        />
    </Platforms>
    <ToolFiles>
    </ToolFiles>
    <Configurations>
        <Configuration
            Name="Debug|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="1"
            CharacterSet="2"
            >
            ...
        </Configuration>
        <Configuration
            Name="Release|Win32"
            OutputDirectory="$(SolutionDir)$(ConfigurationName)"
            IntermediateDirectory="$(ConfigurationName)"
            ConfigurationType="1"
            CharacterSet="2"
            WholeProgramOptimization="1"
            >
            ...
        </Configuration>
    </Configurations>
    <References>
    </References>
    <Files>
        <Filter
            Name="Source Files"
            Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
            UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
            >
            ...
        </Filter>
        <Filter
            Name="CppOp"
            >
            ...
        </Filter>
    </Files>
    <Globals>
    </Globals>
</VisualStudioProject>

すべての構成名を取得する必要があります。これを使用します。

QFile* file = new QFile(xmlFile);
    if (file->open(QIODevice::ReadOnly | QIODevice::Text)) {
        QXmlStreamReader xml(file);
        while (!xml.atEnd() && !xml.hasError()){
            QXmlStreamReader::TokenType token = xml.readNext();
            if (token == QXmlStreamReader::StartDocument)
                continue;
            if (token == QXmlStreamReader::StartElement) {
                if (xml.name() == "Configurations")
                    continue;
                if (xml.name() == "Configuration") {
                    QXmlStreamAttributes attributes = xml.attributes();
                    if (attributes.hasAttribute("Name"))
                        ui->prefferedConfigSelectComboBox->addItem(attributes.value("Name").toString());
                }
            }
        }
    }

http://developer.nokia.com/Community/Wiki/QXmlStreamReader_to_parse_XML_in_Qtを使用しようとしています。QXmlStreamReader は、このファイルの Name 属性を「認識」していないようです。しかし、それは機能しません。理由はわかりません。

4

0 に答える 0