QListWidget中随机元素的变化属性

Change property of random element in QListWidget

我在 QListWidget (ui->listWidget) 中有 5 个 QProgressBar。如何访问第三个 QProgressBar 元素并更改其值 ex。 ( 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);
}

在 class 头文件中创建 QProgressBar(s) 的定义,然后您可以将事物连接到 setValue 插槽,或直接访问它们。

向 QListWidgetItems 添加 ProgressBars 似乎很奇怪……QHBoxLayout 不是更合适吗?

以下代码将获取列表中的第三个元素并将进度设置为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 and qobject_cast