Witajcie,
to znów ja :) dalej bawię się w Qt i napotkałem taki problem
aczkolwiek bawię się z QOpenFile Dialog i wyświetlanie w QWidgetList
i mam problem bo raz mi wyświetla dobrze + dodatkowo linijka jakiś krzaków a raz nie wyświetla mi wgl.
mam już trochę kodu który tym operuje i trudniej mi wyłapać błąd.
Prosił bym o pomoc.
Tutaj z rzut ekranu z przykładowym błędem.
zamieszczam poniżej kod.
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() )
{
PrzepiszPlik(QString::fromStdString("bin/outbase.kas"),fileName);
}
ListWidgetDwaRefresh();
}
void okno::ListWidgetDwaRefresh()
{
ui->listWidget_2->clear();
fstream plik;
string s;
plik.open("bin/outbase.kas",ios::in);
s.clear();
if( plik.good() == true )
{
while(!plik.eof())
{
getline(plik,s);
QString qstr;
qstr=OdPath(QString::fromStdString(s));
ui->listWidget_2->addItem(qstr);
s.clear();
}
}
else
{
OpenError *o = new OpenError;
o->show();
}
plik.close();
}
QString okno::OdPath(QString qstr)
{
string s,str;
s.clear();
str.clear();
QString w,z;
w.clear();
z.clear();
s.clear();
s[0]='/';
str=qstr.toStdString();
int i=qstr.size()-5;
while(str[i]!=s[0])
{
w+=str[i];
i--;
}
z.resize(w.size());
for(int i=0;i<w.size();i++)
z[w.size()-i-1]=w[i];
return z;
}
void okno::PrzepiszPlik(QString qs, QString a)
{
QApplication::setOverrideCursor(Qt::WaitCursor);
rename(qs.toStdString().c_str(),"bin/temp.kas");
fstream plik,temp;
temp.open("bin/temp.kas",ios::in);
plik.open(qs.toStdString().c_str(),ios::out);
if( plik.good() == true && temp.good() == true)
{
while(!temp.eof())
{
string str2;
str2.clear();
getline(temp,str2);
plik<<str2<<"\n";
}
plik <<a.toStdString().c_str()<<"\n";
}
else
{
OpenError*o = new OpenError();
o->show();
}
temp.close();
plik.close();
remove("bin/temp.kas");
QApplication::restoreOverrideCursor();
}