2017-02-19 6 views
0

QListWidgetui->listWidget)に5 QProgressBarがあります。 3番目のQProgressBar要素にアクセスしてその値を変更するにはどうすればいいですか? (progressBar->setValue(40)QListWidgetのランダム要素のプロパティを変更します。

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

    a = new QPushButton(this); 

    connect(a, SIGNAL (clicked()),this, SLOT (clickedSlot())); 
} 

void MainWindow::clickedSlot() 
{ 
    QProgressBar *prog = new QProgressBar(this); 

    QListWidgetItem *it; 

    it = new QListWidgetItem(ui->listWidget); 
    ui->listWidget->insertItem(ui->listWidget->size().height(),it); 
    it->setSizeHint(QSize(200,50)); 

    ui->listWidget->setItemWidget(it, prog); 
} 

答えて

1

次のコードは、リストの3番目の要素を取得し、進行状況を40%に設定します。

QProgressBar *bar = qobject_cast<QProgressBar*>(ui->listWidget->itemWidget(pList->item(2))); 
if (bar) 
    bar->setValue(40); 

qobject_cast安全にウィジェットが実際にQProgressBarである場合にのみ、QProgressBarへのQWidgetをキャストします。 3番目の要素がQProgressBarであることが確かであれば、ifテストif(bar)を省略することができます。

詳細については、QListWidgetおよびqobject_castを参照してください。

1

クラスのヘッダーファイルにQProgressBar(複数可)の定義を作成し、その後、あなたはsetValueのスロットに物事を接続することができ、またはそれらを直接アクセスします。

QListWidgetItemsにProgressBarsを追加するのは奇妙に思えます... QHBoxLayoutはもっと適していませんか?

+0

mainwindow.h QProgressBar * prog; MainWindows.cpp prog =新しいQProgressBar(これ);どうやって ?私はui-> listWidget-> item(0) - > setValue(100);を試しました。 QProgressBar [0]はアクセスできない –

関連する問題