Hi,

Ich hab ein großes problem mit QStringList, ich hab die klasse ThemeManager, die wird später dafür sorgen das man mein Programm umstylen kann.
Jetzt hab ich da die beiden QStringLists sMessages und sSpecial, sMessages verwende ich um z.B. die nachrichten imstatusfenster zu stylen( z.B. status->append( theme->statusMessage( "blala", 1 ) ).
sSpecial soll dann alles andere stylen, z.B. die Inputboxen. ( z.B. lineEdit3->setText( theme->special( "balaber...", 2 ) );
Es wird immer ein pointer auf theme(ThemeManager) an die klassen die etwas stylen müssen übergeben, z.B. bla = new DMp3Player(this,0,0,&theme);

Mit sMessages klappt auch alles super, nur sSpecial macht probleme.
Hier ist erstmal der code von ThemeManager:
Code:
#include <qstring.h>       
#include <qdatetime.h> 
#include <qstringlist.h>      

class ThemeManager
{

public:
    ThemeManager();
    QString     currentTheme;
    QTime       currentTime;
    
    QString     sStatusStart;
    QString     sStatusBkgColor;
    QString     sStatusMsgNormal;
    QString     sStatusMsgCritical;
    QString     sStatusMsgAnother;
    QString     sSpecialCreditsStart;
    QString     sSpecialCreditsEntry;
    QString     sSpecialCreditsEnd;
    QString     sTimestamp;
    QStringList sSpecial;
    QStringList sMessages;
    
    
public:
            // For the /credits Command
    QString creditsStart() const { return sSpecialCreditsStart; };
    QString creditsEntry( QString name, QString email, QString work ) const { return sSpecialCreditsEntry.arg(name).arg(email).arg(work); };
    QString creditsEnd() const { return sSpecialCreditsEnd; };
            // Normal Messages
    QString statusMessage( QString Input, int Num = 0, bool NoTime = FALSE ) const;
    QString statusStart() const { return sStatusStart.arg(currentTime.currentTime().toString("hh:mm:ss")); };
    QString statusNormal( QString Input ) const { return sStatusMsgNormal.arg(currentTime.currentTime().toString("hh:mm:ss")).arg( Input ); };
    QString statusCritical( QString Input ) const { return sStatusMsgCritical.arg(currentTime.currentTime().toString("hh:mm:ss")).arg( Input ); };
    QString statusAnother( QString Input ) const { return sStatusMsgAnother.arg(currentTime.currentTime().toString("hh:mm:ss")).arg( Input ); };
            // Special
    QString special( QString Input, int Num = 0 ) const;
};
Code:
#include "thememanager.h"                

#include <qstring.h>                                
#include <qdatetime.h>              
#include <qstringlist.h>                   
#include <iostream.h>                         // is veraltet, weiss ich, kommt noch raus
ThemeManager::ThemeManager()
{
    
    sStatusStart = "<b style=color:#596b05;>(%1) Opened Status Window</b>\n";
    sStatusMsgNormal = "<b style=color:#596b05;>(%1) %2</b>";
    sStatusMsgCritical = "<b style=color:#bc6118;>(%1) %2</b>";
    sStatusMsgAnother = "<b style=color:#aebc18;>(%1) %2</b>";
    sStatusBkgColor = "#f4f6ed";
    sSpecialCreditsStart = "<table cellpadding=0 cellspacing=0><tbody>";
    sSpecialCreditsEntry = "<tr><td><b style=color:#aebc18;>%1<b></td><td><b style=color:#aebc18;>%2<b></td><td><b style=color:#aebc18;>%3<b></td></tr>";
    sSpecialCreditsEnd = "</tbody></table>";
    sTimestamp = "(hh:mm:ss)";                             // Timestamp
    sMessages += "<b style=color:#596b05;>%1 %2</b>";      // Normal Message 
    sMessages += "<b style=color:#bc6118;>%1 %2</b>";      // Critical Message
    sMessages += "<b style=color:#aebc18;>%1 %2</b>";      // Describing Message
    sMessages += "<b style=color:#bc189b;>%1 %2</b>";      // Join/Part/Quit Message
    sMessages += "<b style=color:#186dbc;>%1 %2</b>";      // Nickchange Message
    sSpecial += "<b style=color:#596b05;>%1</b>";
    sSpecial += "<b style=color:#596b05;>%1</b>";
    sSpecial += "<b style=color:#596b05;>%1</b>";
    cout<<sSpecial.count()<<endl;
    cout<<sSpecial[2]<<endl; // KEIN SIGSEGV
}

QString ThemeManager::statusMessage( QString Input, int Num, bool NoTime ) const
{
    if ( NoTime )
    {
        return sMessages[Num].arg("").arg( Input ); 
    }
    else
    {
        return sMessages[Num].arg(currentTime.currentTime().toString(sTimestamp)).arg( Input ); 
    }
}

QString ThemeManager::special( QString Input, int Num ) const
{
    // Hier kommt ein SIGSEV, warum?
    // mach ich // vor das if geht alles problemlos, mal abgesehen von der tatsache das ich die 
    // funktion so nicht benutzen kann :)
    if (sSpecial.size() > 1) {cout<<sSpecial[1]<<endl;}
    return "..."; 
}
Wenn ich das // vor dem if wegmache, kommt ein SIGSEGV beim starten des programms, warum?
Was läuft da schief?

Wenn ihr mehr code oder informationen braucht, sagt bescheid.