Вы можете быть в состоянии явно указать эллиптическую геометрию, которую вы хотите, используя QWidget::setMask
(который QToolButton
наследует), я не проверял его вместе с setIcon
, но он работает без, так что, возможно, стоит попробовать.Вы могли бы сделать это с чем-то вроде
QRect rect(nXStart, nYStart, nWidth, nHeight);
QRegion region(rect, QRegion::Ellipse);
mpBtnMoreOptions -> setMask(region);
Я не проверял это, хотя, поэтому никаких гарантий.
Редактировать
Вот более полный пример, с некоторыми исправлениями дляполучить правильную геометрию региона
QMainWindow* main = new QMainWindow;
QWidget *central = new QWidget;
QToolButton* tool = new QToolButton(central);
int nWidth = 100;
int nHeight = 100;
int nXStart = 10;
int nYStart = 10;
QRect rect(nXStart, nYStart, nWidth/2, nHeight/2);
tool->setGeometry(rect);
rect.setRect(0, 0, nWidth/2, nHeight/2); // Region needs to start at (0,0)
QRegion region(rect, QRegion::Ellipse);
tool->setMask(region);
tool->setIconSize(QSize(100, 100));
tool->setIcon(QIcon(":/Test/icon"));
tool->setAutoRaise(true);
main->setCentralWidget(central);
main->resize(600, 400);
main->show();
Выход