Portál AbcLinuxu, 2. května 2025 05:51
V první ukázce se volá pouze KIO::copy() a hned na to KIO::move(). Z toho by člověk nabyl dojmu, že se jedná o blokující funkce (až se dokončí KIO::copy(), zahájí se KIO::move()).
Jenže v následující ukázce MainWindow::copyDir() se volá KIO::copy() a teprve po té se registrují signály, dodělávají widgety a podobně. Tady to vypadá, že volání KIO::copy() pouze připraví objekt, ale nic se ještě nevykoná (kdyby ano, tak by celá úloha mohla skončit, ještě než se dotaneme k nastavení signálů). V dalším kódu se ale nikde objektu current_job neříká, aby zahájil činnost, ani se nikde nečeká na jeho ukončení.
Jak to tedy je?
connect(current_job, SIGNAL(finished(KJob*)),
this, SLOT(jobFinished(KJob*)));
Prvni signal emituje KIO::Job 200ms po spusteni, takze hlavni proces ma dost casu se na signaly KIO Jobu povesit, a o nic neprisel.
jinak, nez pres notifikacni panel v Plasme se to uz v KDE4 vytahnout neda
Veď práve, do 4.5 mi to išlo ešte okenným spôsobom. Asi si budem musieť kuiserver opraviť sám.
KIO::CopyJob *linkJob = KIO::link(source, link, HideProgressInfo);
Diky, opraveno.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.