If the Qt application is still running and has an open, uncommitted transaction then it sees the content of the transaction, and nothing else does. This is standard RDBMS transaction isolation and not unique to Sqlite or Qt. The transaction is tracked partly in the database (the actual data) and partly in associated files created in the same directory (See http://sqlite.org/tempfiles.html). By copying away only the main.db you lose track of the open transaction and the uncommitted data becomes visible but is possibly not consistent.
Sqlite supports an in-memory database: if it were using this there would be no disk file to see.
Edit:
Qt 4.8.1 has Sqlite 3.7.7.1 as the shipped version. This will be used by the Sqlite driver unless Qt was built to use the system version of Sqlite.
Bookmarks