gpt4 book ai didi

c++ - Qt:有什么方法可以调用具有特定时间间隔的一系列插槽?

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:55 25 4
gpt4 key购买 nike

我现在的工作方式是将 QTimer 连接到第一个插槽,在第一个插槽内,它将触发另一个单次 QTimer,这将触发第二个插槽...等等。

如果我一次更新所有小部件,GUI 将卡住一秒钟。但这是显而易见的。所以我想避免这种情况。

但是这个代码是很难写的。您必须在所有地方添加 QTimer。有没有更好的解决方案?

编辑:这就是我更新小部件的方式,也许有更好的方法?

void UAVInfoView::updateDisplay()
{

if (!visibleRegion().isEmpty()){
info = _dataSrc->getUAVInfo(_id-1);
if (info)
{
//if new package received try to do updating.
if (_pakchk != info->_pakcnt){
//only update the text if there is communication
if (info->_communication != COMMSTATUS::WAIT4CONNECTION && info->_communication != COMMSTATUS::LOST)
{
ui->plainTextEdit->setPlainText(tr("x: %1\ny: %2\nz: %3").arg(info->_pos[0]).arg(info->_pos[1]).arg(info->_pos[2]));
}
//only update the status indicator only if status changed.
if (_status != info->_communication)
{
switch (info->_communication){
case COMMSTATUS::CONNECTED:
ui->groupBox->setStyleSheet("QGroupBox#groupBox {background-color:green;}");
ui->label_2->setText("On Line");
break;
case COMMSTATUS::LOST:
ui->groupBox->setStyleSheet("QGroupBox#groupBox {background-color:red;}");
ui->label_2->setText("Lost");
break;
case COMMSTATUS::WAIT4CONNECTION:
ui->groupBox->setStyleSheet("QGroupBox#groupBox {background-color:grey;}");
ui->label_2->setText("Off Line");
}
}
}
//update the status and package counter to serve the state machine.
_status = info->_communication;
_pakchk = info->_pakcnt;
}
}
}

如你所见,它只是一堆默认的 =, !如果还有其他事情...

最佳答案

您可以在连接到计时器的槽中以特定间隔调用它们。您连接到计时器的插槽可能是这样的:

void myClass::onTriggered()
{
switch(turn){
case 0:
slot1();
break;
case 1:
slot2();
break;
...
}

turn++;
if(turn>=numberOfSlots)
turn = 0;
}

这样每次调用一个槽时,它们都会被顺序调用。

关于c++ - Qt:有什么方法可以调用具有特定时间间隔的一系列插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28766337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com