1

QTプログラミングを学び始めました。基本的なシグナルとスロットプログラミングを練習していました。次のコードを書きました

    #include "mainwindow.h"
    #include "ui_mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :
         QMainWindow(parent),
              ui(new Ui::MainWindow)
      {
        ui->setupUi(this);
        ui->progressBar->setValue(1);
        ui->progressBar->setRange(0,100);
        connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
                                    ui->progressBar,SLOT(setValue(int)));
      }

     MainWindow::~MainWindow()
          {
          delete ui;
          }

問題は、水平スライダーを最大値に移動すると、進行状況バーに最大 99% の値が表示されることです。100%ではありません。表示するQTのデフォルト値ですか?または、コードに間違いがありますか? 助けてください。ありがとう

4

2 に答える 2

3

paulmのコメントで述べたように、ドキュメントには、QAbstractSliderのデフォルトの範囲は0〜99であると記載されています。そのスライダーを使用して100に到達することはありません。

これを確認するには、コンストラクターで次の手順を実行して、QProgressBarの範囲をスライダーの範囲と一致するように設定しますMainWindow。(完全なコード用に編集)

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    /* naive way */
    //ui->progressBar->setValue(1);
    //ui->progressBar->setRange(0,100);

    /* "correct" way - note that I set the range FIRST */
    ui->progressBar->setRange(ui->horizontalSlider->minimum(),
                              ui->horizontalSlider->maximum());
    ui->progressBar->setValue(ui->horizontalSlider->value());  //initialize the progress bar to slider's initial value

    connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),
            ui->progressBar,SLOT(setValue(int)));
}
于 2013-03-07T17:24:11.077 に答える
1

プログレスバーに対応するスライダーのプロパティを設定する必要があります。

つまり、スライダーの最大値が進行状況バーを100%に設定するスライダーで井戸setMinimumを使用しますsetMaximum

于 2013-03-07T10:16:19.733 に答える