我在QListWidget
中有 5 个QProgressBar
秒(ui->listWidget
)。如何访问第三个QProgressBar
元素并更改其值,例如 (progressBar->setValue(40)
)
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);
}
以下代码将获取列表中的第三个元素,并将进度设置为 40%。
QProgressBar *bar = qobject_cast<QProgressBar*>(ui->listWidget->itemWidget(pList->item(2)));
if (bar)
bar->setValue(40);
qobject_cast
将安全地将 QWidget 投射到 QProgressBar,只有当该小部件确实是 QProgressBar 时。如果您确定第三个元素是 QProgressBar,则可以省略 if 测试if(bar)
。
有关更多信息,请参阅 qt 文档 QListWidget 和 qobject_cast。
在类头文件中为 QProgressBar(s) 创建定义,然后您可以将内容连接到 setValue 插槽,或直接访问它们。
将进度条添加到QListWidgetItems似乎很奇怪...QHBox布局不是更合适吗?