Зависит от того, какая технология используется. Если QtWidgets, то делаем
QSS. Но на сегодня она уже морально устарела, и потому лучше использовать QML — в таком случае стоит посмотреть на то, как дизайн реализован в
исходниках Qt Quick Controls 2.
Вставить картинкой (лучше бы svg) — рабочее решение, особенно если там какая-то сложная форма, градиенты, тени и т.д. А если обычная кнопка, то лучше обойтись без картинок, комбинацией примитивных элементов.
Если писать максимально просто и руками, то кнопка это просто Rectangle, внутри которого лежит MouseArea, которая может иметь отрицательный размер отступа от краев.