ネイティブのQTカスタム進捗バーを実装する方法は?

Qtでプログレスバーをカスタマイズする方法にはいくつかあります。以下はその中の1つです。

  1. カスタム進捗バーのクラスを定義して、QProgressBarクラスを継承します。
class CustomProgressBar : public QProgressBar
{
    Q_OBJECT

public:
    CustomProgressBar(QWidget *parent = nullptr) : QProgressBar(parent) {}

protected:
    void paintEvent(QPaintEvent *event) override
    {
        QProgressBar::paintEvent(event);
        
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);
        
        // 自定义绘制进度条的样式
        // ...
    }
};
  1. PaintEvent() 関数では、QPainter を使用して、プログレスバーのスタイルを描画します。drawRect() を使用して矩形プログレスバーを描画したり、drawEllipse() を使用して円形プログレスバーを描画したり、といったように、QPainter のさまざまな描画関数を使用して、カスタムのプログレスバー スタイルを描くことができます。必要に応じて、自由にデザインして描画することができます。
  2. オリジナルプログレスバークラスのコンストラクタでは、プログレスバーのスタイル、カラー、フォントなどのプロパティを設定できます。
CustomProgressBar::CustomProgressBar(QWidget *parent)
    : QProgressBar(parent)
{
    setStyleSheet("QProgressBar {"
                  "    border: 1px solid gray;"
                  "    border-radius: 5px;"
                  "    text-align: center;"
                  "    background: white;"
                  "}"

                  "QProgressBar::chunk {"
                  "    background-color: #05B8CC;"
                  "    width: 10px;"
                  "}"
                  );

    setFont(QFont("Arial", 10));
}
  1. カスタムプログレスバーを使う際には、通常のQProgressBarを使用する場合と同様に使用できます。
CustomProgressBar *progressBar = new CustomProgressBar(this);
progressBar->setRange(0, 100);
progressBar->setValue(50);
  1. 最後に、カスタマイズしたプログレスバーを使用したいウインドウやレイアウトに追加します。
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(progressBar);
setLayout(layout);

上記の手順でカスタムプログレスバーを実現できます。paintEvent()関数で、用途に応じてプログレスバーのスタイルを独自に描画して、アプリケーションのインターフェイススタイルにさらに適合させることができます。

bannerAds