0

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

2 回答 2

1

以下代码将获取列表中的第三个元素并将进度设置为 40%。

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

qobject_cast仅当小部件确实是 QProgressBar 时,才会安全地将 QWidget 转换为 QProgressBar。如果您确定第三个元素是 QProgressBar,则可以省略 if 测试if(bar)

有关更多信息,请参阅 qt 文档QListWidgetqobject_cast

于 2017-02-27T13:44:36.860 回答
1

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

将 ProgressBars 添加到 QListWidgetItems 似乎很奇怪...... QHBoxLayout 不是更合适吗?

于 2017-02-19T16:44:47.013 回答