QString out of range

1

abc_bmp_300x300_q85.jpg

Tak aktualnie wygląda u mnie błąd gdy wywołuję taką metodę

void okno::on_actionOpen_triggered()
{
    //QString
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                     "/home",
                                                     tr("Kasia files(*.kas);;Text files (*.txt);;XML files (*.xml);;All files (*.*)"));
    if( !fileName.isNull() )
    {
        fstream plik;
        plik.open("bin/outbase.kas",ios::out | ios::app);
        if( plik.good() == true)
            {
                plik <<fileName.toStdString().c_str()<<"\n";
            }
            else
            {
                Error*o = new Error();
                o->setNapis(QString::fromStdString("Cannot open file"));
                o->show();
            }
        plik.close();
    }
} 

Nie wiem jak go naprawić co zrobić ? By string był odpowiedni

2

Skoro używasz już Qt to zainteresuj się klasą QFile zamiast fstreama.
I nie QString::isNull() ale QString::isEmpty().

1

Tak jak napisał MasterBLB, nie ma sensu mieszać w to STL. Qt wspiera STLa by nie było problemu z używaniem innych bibliotek, jak piszesz nowy kod to lepiej nie mieszać Qt z STL.

void okno::on_actionOpen_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                     "/home",
                                                     tr("Kasia files(*.kas);;Text files (*.txt);;XML files (*.xml);;All files (*.*)"));
    if( !fileName.isNull() ) {
        QFile plik("bin/outbase.kas");
        if(file.open(QIODevice::WriteOnly|QIODevice::Append)) {
            QTextStream text(&plik);
            text <<fileName << endl;
            plik.close();
        } else {
            Error*o = new Error();
            o->setNapis(tr("Cannot open file"));
            o->show();
        }
    }
} 
0

dodam, że używam w tym momencie windows8 pod 7 nie generowało tego błędu
I dodam, że po wprowadzeniu poprawek od was błąd nadal wywala.
To może być problem tego, że windows8 right ?

1

wyjątek leci z xstring (wygląda na plik STL-a), wiec może być to winna na styku kompilator system. Poza tym Qt nie wspiera jeszcze W8 i nie jest to dziwne, bo to jest nadal nieoficjalny system.

1 użytkowników online, w tym zalogowanych: 0, gości: 1