2011-12-16 7 views
1

アプローチQStyleサブクラスを使用して、パレットを設定すると、動作しない(ただし、MyStyleに他のベーススタイルのために動作しません)。OS XでQProgressBarのスタイルを変更することはできますか?

void MyStyle::drawControl(ControlElement control, const QStyleOption *option, 
          QPainter *painter, const QWidget *widget) const 
{  
    switch(control) 
    { 
     case CE_ProgressBar: 
     { 
      const QStyleOptionProgressBarV2 * pOpts = 
      static_cast<const QStyleOptionProgressBarV2 *>(option); 
      QStyleOptionProgressBarV2 oOpts(*pOpts); 

      QColor progressColor(QColor::fromHsl(50, 160, 162)); 
      oOpts.palette.setColor(QPalette::Highlight, progressColor); 

      // BASESTYLE is QMacStyle 
      BASESTYLE::drawControl(control, &outputOptions, painter, widget); 
     } 
      break; 

     default: 
      BASESTYLE::drawControl(control, option, painter, widget); 
    } 
} 

OS Xでウィジェットの外観を制御する他の方法はありますか? (またはそれは完全に不可能である?)

+0

あなたは何を得るか見る、QSS使用することができますか? QProgressBarは何も/ゴミだけを描画しますか?もしそうなら、それはあなたが正しい軌道に乗っていることを示しているだろうが、BASESTYLE :: drawControl)は、 '' CE_ProgressBar'ケースに削除されます(あなたのプリアンブルを無視している。 –

+0

うん、私は、もし 'BASESTYLE :: drawControlを(確認することができます)その後、何のプログレスバーが描画されません。( 'BASESTYLE'は、当然のことながら、ある' QMacStyle')。最悪の場合 – James

+0

あなたは常に、その後、コピー&ペースト、独自のメソッドにBASESTYLE :: drawControl()からのコードを、そして可能性BASESYLE :: drawControl()のソースコードを見て、CE_ProgressBarのケースがどのように実装されているかを確認する必要があります。 –

答えて

0

確かに、あなたはCE_ProgressBarケースにコードのすべてをコメントアウトした場合QProgressBar example

関連する問題