...словил себя на том что у меня логика работы программы перемешана с интерфейсом. Как с этим бороться и стоит ли? И где нужно проводить эту границу, если она есть?
Бороться стОит (пусть часто в этой борьбе побеждает змий
) Для начала "на уровне cpp файлов", напр. эти файлы используют QtGui, а эти нет, так же и с базой. Вероятно придется добавить несколько простеньких классов "адаптеров", но эффект получается положительный.