Morgen, Ich versuche mich mal wieder an QT und habe ein Problem mit meiner Anwendung beim Auslesen/Einfügen von XML Daten in ein QTableWidget.
Da ich nicht gerade der C++ Kenner bin weiss ich nicht was ich hier falsch mache.
Auf jeden Fall verbrate ich in der Methode FillRimTableWidget() zu viel Speicher, die Anwendung startet extrem langsam. Wie kann ich das ganze Optimieren?
PHP-Code:
QDomDocument SpokecalculatorXmlReader::OpenXmlFile( const charxml, const charfirst )
{
        
QString fp"/home/Projekte/qspokecalc/data/" );
        
fp.appendxml );
        
fp.append".xml" );

        
QFile filefp );
        if ( 
file.openQIODevice::ReadOnly ) ) {
                
QDomDocument newdocfirst );
                if ( ! 
newdoc.setContent( &file ) )
                        
std::cout << "cant parse DomDocument" << std::endl;

                
file.close();
                return 
newdoc;
        } else
                
std::cout << "cant open XML Document" << std::endl;

        
file.close();
        
QDomDocument doc"empty" );
        return 
doc;
}

void SpokecalculatorXmlReader::FillRimTableWidgetQTableWidget *table )
{
        
int i 0;
        
int NumCount 0;
        
QDomDocument xmldom OpenXmlFile"rims""rimslist" );
        
QDomElement rootNode xmldom.documentElement();
        
QDomNode ChildNode rootNode.firstChild();
        while( ! 
ChildNode.isNull() ) {
                
QDomElement nextChild ChildNode.toElement();
                if( ! 
nextChild.isNull() && nextChild.isElement() == true ) {
                        
QDomNode valnextChild.firstChild() );
                        
QDomAttr attr_nar nextChild.attributeNode"nar" );
                        
table->insertRowNumCount );
                        
table->setItemNumCount0, new QTableWidgetItemval.nodeValue() ) );
                        
table->setItemNumCount1, new QTableWidgetItemattr_nar.value() ) );
                        
NumCount++;
                }

                if ( 
>= 5000 || NumCount >= 5000 )
                        break;

                
ChildNode ChildNode.nextSibling();

                
i++;
        }