Вы должны установить для атрибута flat значение true:
button1->setFlat(true);
Вы также должны установить фон автозаполнения -
button1->setAutoFillBackground(true);
Возможно, вы захотите взглянуть на QToolButton, который не требует, чтобы он был плоским для визуализации изображения. Я использую их в приложении, которое пишу в данный момент, и они выглядят очень красиво:
m_showAddCommentButton = new QToolButton();
m_showAddCommentButton->setAutoFillBackground(true);
palette = m_showAddCommentButton->palette();
palette.setColor(QPalette::Button,QColor(82,110,166));
m_showAddCommentButton->setPalette(palette);
m_showAddCommentButton->setIcon(QIcon(":/uiImages/addComment_50_50.jpg"));
m_showAddCommentButton->setIconSize(QSize(40,40));
m_showAddCommentButton->setToolTip("Comment");
connect(m_showAddCommentButton, SIGNAL(clicked()),
manager, SLOT(showAddComment()));
hLayout->addWidget(m_showAddCommentButton,0);
(Мое изображение хранится как ресурс)