refactor QButton