2017-11-23 3 views
0

QToolButtonがクリックされるのを防ぐ方法はありますか?私はどこかの設定を読むQToolButtonが移動しないようにする

button->setCheckable(false); 

トリックを行う必要がありますが、それはありません。

+0

ボタンを描く必要があります。それが押された状態にあるときは、通常通りそれを描くべきです。ちょうどコピーペースペイント方法とそれを修正します。またはQSSを使用して、押したボタンを通常と同じ方法で描きます。 –

答えて

1

をcontrollするためにそれを使用します。

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); 
+0

ありがとう!私は実際にこのソリューションを試してみましたが、うまくいきませんでした。私は 'myToolButton-> setStyleSheet(" QToolButton {border:none; color:#223f5a;} ");'を設定しているので、これで問題があったと思います。このスタイルシートを 'QProxyStyle'に統合する方法を知っていますか? – madasionka

+0

あなたはそうです:スタイルシートとプロキシスタイルは一緒に動作しません。私のソリューションを使用する場合は、ボタンを最初からペイントしなければなりません(ちょっと退屈です)(http://doc.qt.io/qt-5/style-reference.html)。 QAbstractButtonをサブクラス化して、必要な振る舞いを持たせるのが最適な解決策でしょうか? – IAmInPLS

0

ツールバーにQActionを追加し、QProxyStyle経由でそれを行うための方法があり、あなたのツールボタン

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

回答ありがとうございますが、私はツールバーを持っていません。私はちょうどQToolButtonを持っています。基本的に私がやっていることは、これをカスタマイズすることです:https://github.com/Elypson/qt-collapsible-section。 – madasionka

関連する問題