Для переноса слов в обычном QPushButton вы можете реализовать прокси-класс стиля, производный от QProxyStyle.
/**
proxy style for text wrapping in pushbutton
*/
class QtPushButtonStyleProxy : public QProxyStyle
{
public:
/**
Default constructor.
*/
QtPushButtonStyleProxy()
: QProxyStyle()
{
}
virtual void drawItemText(QPainter *painter, const QRect &rect,
int flags, const QPalette &pal, bool enabled,
const QString &text, QPalette::ColorRole textRole) const
{
flags |= Qt::TextWordWrap;
QProxyStyle::drawItemText(painter, rect, flags, pal, enabled, text, textRole);
}
private:
Q_DISABLE_COPY(QtPushButtonStyleProxy)
};
И позже в вашем собственном MyQtPushButton:
MyQtPushButton::MyQtPushButton()
: QPushButton()
{
setStyle(new QtPushButtonStyleProxy());
}
См. Дополнительную информацию о классе QProxyStyleв документации Qt.