Qt + Webkit : fonctionnera sur Linux, Windows, Mac.
Langages : C++, HTML / CSS / Javascript (voire PHP si tu as aussi besoin d'un serveur web central, cette partie n'est pas claire dans ta question). Tu peux peut-être remplacer le C++ par un autre langage qui a des bindings Qt (au hasard, Python) mais là je pourrai pas vraiment te conseiller.
Bases de données : à peu près ce que tu veux, mais si c'est pour une utilisation uniquement locale SQLite est assez facile d'utilisation / déploiement (ne nécessite aucune installation/administration d'un serveur, toute la base est contenue dans un seul fichier). Si t'as besoin d'un serveur central tu fais comme tu veux (MySQL, Postgre, ...).
Si ton appli n'a pas besoin d'être connectée à internet je crois que tu peux assez facilement intégrer le "serveur web" directement dedans (aucun accès réseau, tu interceptes directement les requêtes HTTP) -- à vérifier j'ai jamais fait ça, faudrait probablement dériver QNetworkAccesManager et QNetworkReply. Mais l'avantage d'un produit mixte C++/HTML comme ça c'est plutôt d'avoir une partie performante en C++ et une UI qui se met à jour "dynamiquement" à partir d'un serveur web central. Ou tu dois aussi pouvoir faire un mélange entre le contenu web centralisé, web local et natif local.
Les objets C++ sont utilisables à partir du code Javascript et vice-versa, ce qui présente de gros avantages si tu as un serveur web central pour fournir du contenu (mise à jour transparente du code Javascript). Tu peux aussi intégrer des widgets Qt (éléments d'UI plus ou moins complexes) dans les pages web affichées donc tu as une vraie "interface riche".
Par contre si tu as un serveur web central pour distribuer du contenu le vrai problème ça va être de restreindre son usage à ta seule application, ça va être assez compliqué vu que ça reste du HTTP qui te produit du HTML (non, les secrets partagés entre ton appli et le serveur ne fonctionnent pas : le réseau ça se sniffe et même si tu passes en SSL pour empêcher ça, il restera toujours le désassemblage du programme lui-même car celui-ci est
obligé de connaître le secret, et tout ça dans le "meilleur" des cas pour toi, à savoir si tes sources restent fermées). Ça dépendra aussi :
- du public visé (B2B ? Grand public ?), car les entreprises ont assez peu de temps à perdre pour essayer de contourner ce genre de protections (faut quand même que ça reste sécurisé mais c'est encore une autre question)
- du niveau de "protection" que tu veux (mettre des bâtons dans les roues de Mme Michu, ou bien empêcher complètement un bricoleur professionnel pourtant bien décidé à y arriver)
- est-ce que ça sera Open Source ? (là ça va être encore plus compliqué

)
Gros inconvénient de cette solution : la courbe d'apprentissage C++ / Qt qui sera
très longue étant donné le nombre de technos en jeu...
