Sleep dałem tylko chwilowo, wiem, że to złe rozwiązanie, po prostu wcześniej program wczytywał plik, zanim ten się zapisał(a niektóre programy tak zapisują, że najpierw usuwają plik i tworzą nowy) i nie mógł go otworzyć. Jak zadziała, to zmienię to na jakieś sensowne rozwiązanie.
void wczytaj(QWidget *tab_2, QWidget *tab_3, float width)
{
std::ifstream dane;
dane.open("PLIK_ZAPISANE.txt");
std::string godzina, dzien, typ, tresc, tresc1, tresc2, tresc3, cala, kosz;
while(getline(dane, tresc))
{
getline(dane, kosz);
getline(dane, tresc1);
getline(dane, kosz);
getline(dane, kosz);
getline(dane, tresc2);
getline(dane, typ);
getline(dane, kosz);
getline(dane, kosz);
getline(dane, godzina);
godzina.erase(6,4);
std::string godz = godzina;
godz = godz.erase(0,2);
godz = godz.insert(2,":");
godz = godz.insert(5, " - ");
godz = godz.insert(10, ":");
cala = godz + "\n" + tresc + "\n" + tresc1 + "\n" + tresc2;
if(godzina[0]=='1')
{
dodaj_kurs(width, godzina, typ, cala, tab_2);
}
else if(godzina[0]=='2')
dodaj_kurs(width, godzina, typ, cala, tab_3);
}
dane.close();
}
std::vector<QWidget *> adresy_kursow;
void dodaj_kurs(float width, std::string informacje, std::string typ_zajec, std::string tresc, QWidget *tab_2)
{
std::string info = informacje;
int wys_pocz = 0;
if(informacje[1]=='0')
wys_pocz=28;
else if(informacje[1]=='1')
wys_pocz=148;
else if(informacje[1]=='2')
wys_pocz=268;
else if(informacje[1]=='3')
wys_pocz=388;
else if(informacje[1]=='4')
wys_pocz=508;
std::string czas = informacje.erase(0,2);
std::string poczatek = "0730" + czas.substr(0, 4);
int dlugosc = diff(czas);
dlugosc /= 60;
float szer_linii = ((width-100)/55)/15;
int pocz_czas = diff(poczatek)/60;
float tmp = pocz_czas*szer_linii;
QLabel *tekst;
QWidget *widget = new QWidget(tab_2);
widget->setObjectName(QStringLiteral("widget"));
widget->setGeometry(QRect(61 + tmp, wys_pocz, (szer_linii*dlugosc) , 120));
int t1 = typ_zajec.find("Wykład");
int t2 = typ_zajec.find("Ćwiczenia");
int t3 = typ_zajec.find("Zajęcia laboratoryjne");
int t4 = typ_zajec.find("Projekt");
int t5 = typ_zajec.find("Seminarium");
int t6 = typ_zajec.find("Inne");
if(t1>=0)
widget->setStyleSheet(QLatin1String("background-color: #00a65a;\n"
" border: 1px solid #00a65a;\n"
" opacity: 0.85;"));
else if(t2>=0)
widget->setStyleSheet(QLatin1String("background-color: #f39c12;\n"
" border: 1px solid #f39c12;\n"
" opacity: 0.85;"));
else if(t3>=0)
widget->setStyleSheet(QLatin1String("background-color: #3c8dbc;\n"
" border: 1px solid #3c8dbc;\n"
" opacity: 0.85;"));
else if(t4>=0)
widget->setStyleSheet(QLatin1String("background-color: #00c0ef;\n"
" border: 1px solid #00c0ef;\n"
" opacity: 0.85;"));
else if(t5>=0)
widget->setStyleSheet(QLatin1String("background-color: #45b6b0;\n"
" border: 1px solid #45b6b0;\n"
" opacity: 0.85;"));
else if(t6>=0)
widget->setStyleSheet(QLatin1String("background-color: #000;\n"
" border: 1px solid #000;\n"
" opacity: 0.85;"));
tekst = new QLabel(widget);
tekst->setObjectName(QStringLiteral("tekst"));
tekst->setGeometry(QRect(0, 0, szer_linii*dlugosc, 120));
tekst->setStyleSheet(QStringLiteral("color: rgb(255, 255, 255);"));
tekst->setAlignment(Qt::AlignCenter);
tekst->setWordWrap(true);
QString qs = QString(tresc.c_str());
tekst->setText(qs);
adresy_kursow.push_back(widget);
}
Zmieniłem na ' connect(watcher, &QFileSystemWatcher::directoryChanged, this, &MainWindow::aktualizuj);', ale nic nie zmieniło. Ogólnie bawię się programowaniem dla frajdy i na własne potrzeby, a w qt jestem całkowicie zielony. Dzięki za odzew!