Eu tenho a pista de um comentário para essa pergunta que não consigo encontrar mais.
Se você quiser escrever / ler no sistema de arquivos, você deve cuidar do confinamento do aplicativo no Ubuntu. Um aplicativo confiável que não seja do sistema operacional normal pode gravar apenas em alguns diretórios "privados" limitados e ler mais alguns diretórios. Você pode usar a classe QStandardPaths para encontrar esses diretórios.
Por exemplo, para obter o diretório de dados graváveis, uso QStandardPaths::writableLocation(QStandardPaths::DataLocation)
e, com QStandardPaths::standardLocations(QStandardPaths::DataLocation)
, obtenho todos os diretórios de dados legíveis. Funciona para eu criar meu arquivo sqlite3 no diretório de dados graváveis.
A propósito: você pode obter outros tipos de diretórios para seu aplicativo usando QStandardPaths (por exemplo temp, cache, ...).
Os confinamentos do aplicativo do Ubuntu estão disponíveis aqui .