【问题标题】:QT - Adding widgets to horizontal layout step by stepQT - 逐步将小部件添加到水平布局
【发布时间】:2013-05-01 21:53:29
【问题描述】:

我有一个水平布局,当用户输入一个数字时,我会将该数量的小部件(包含图片)添加到该布局中。

void MainWindow::on_pushButton_2_clicked()
{
    for(int i=0; i<count; i++)
    {
        ui->horizontalLayout_4->addWidget(label);
    }
}

例如,如果用户输入100,则该函数循环100次,在函数执行完毕后,同时添加100个widget。

但我希望功能一步一步地添加小部件。

例如,i=0 时添加,i=1 时添加.. 并且用户应该看到逐步添加的项目。

有可能吗?

【问题讨论】:

  • 试试usleep() ?也把它放在QThread 中是一件好事

标签: c++ qt layout widget


【解决方案1】:

on_pushButton_2_clicked 中,您可以启动QTimer,连接到添加单个小部件的插槽。给计时器一个合理的超时时间,这样您就可以“看到”每个正在添加的小部件。然后在课堂上使用计数器,以便您知道何时停止计时器。因此,如果用户输入 10,则将计数器设置为 10,并在每次触发计时器时将其减一。当计数器达到零时停止计时器。

【讨论】:

  • 我试过了,但我想在我使用 QTimer 时调用ui-&gt;horizontalLayout_4-&gt;addWidget(label); 时添加该小部件,在 for 循环完成后添加小部件。我的计时器和连接看起来像这样QTimer *timer = new QTimer(this); timer-&gt;start(500); connect(timer, SIGNAL(timeout()), this, SLOT(currentplaying()));
  • 如果您想在 on_pushButton_2_clicked 中一次添加所有这些,那么您可以保持代码不变,但在每次迭代时添加一个睡眠和对 QCoreApplication::processEvents 的调用。跨度>
【解决方案2】:

我会实现一个计时器,让 UI 有机会在每次拍摄之间刷新

【讨论】:

    猜你喜欢
    • 2013-05-01
    • 2012-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多