在QListWidget中更改随机元素的属性



我在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布局不是更合适吗?

相关内容

  • 没有找到相关文章

最新更新