QToolButton 防止移动

QToolButton prevent from moving

有没有办法防止 QToolButton 在点击时变成 "pressed in"?我在某处读到该设置

button->setCheckable(false);

应该可以解决问题,但事实并非如此。

QAction添加到工具栏并用它来控制您的工具按钮

// button action
QAction * poBtnAction = poToolbar->addWidget(button);
// disable button
poBtnAction->setEnabled(false);

有一种方法可以通过 QProxyStyle 实现:

class ButtonProxyStyle : public QProxyStyle
{
public:
    const int pixelMetric(PixelMetric metric, const QStyleOption *option = 0, const QWidget *widget = 0) 
    {
        int ret = 0;
        switch (metric) 
        {
        case QStyle::PM_ButtonShiftHorizontal:
        case QStyle::PM_ButtonShiftVertical:
            ret = 0;
            break;
        default:
            ret = QProxyStyle::pixelMetric(metric, option, widget);
            break;
        }
        return ret;
    }
};

然后,使用您的按钮:

myToolButton->setStyle(new ButtonProxyStyle);