The API of this class seems very strange.  How is it intended to work?  I expected something of the form: void downloadImageAndUpdateDatabase(primaryKey); which would access the database, download the image, save the image to disk, update the database, and then emit a finished signal (with the primary key as a parameter).