gpt4 book ai didi

c++ - 单击两次 listWidget 项目时 Qt 崩溃

转载 作者:行者123 更新时间:2023-11-28 07:22:09 25 4
gpt4 key购买 nike

在我的项目中,我有一个listWidget。当用户单击列表中的项目时,它会加载:

void BlockSelect::on_blockList_clicked(const QModelIndex &index)
{
QString blockListName;
QString temp_hex;
QString temp_hex2;
int temp_int;

QListWidgetItem *newitem = ui->blockList->currentItem();

blockListName = newitem->text();
temp_hex = blockListName.mid(0, blockListName.indexOf(" "));

if(temp_hex.indexOf(":") == -1)
{
temp_int = temp_hex.toInt();
ui->blockIdIn->setValue(temp_int);
ui->damageIdIn = 0;
}
else
{
temp_hex2 = temp_hex.mid(temp_hex.indexOf(":")+1, temp_hex.length()-(temp_hex.indexOf(":")+1));
temp_hex = temp_hex.mid(0, temp_hex.indexOf(":"));
temp_int = temp_hex.toInt();
ui->blockIdIn->setValue(temp_int);
temp_int = temp_hex2.toInt();
ui->damageIdIn->setValue(temp_int);
}
}

其中大部分只是字符串操作。 (你不需要研究这个语法或任何东西)

我的问题是,当用户快速点击另一个列表项时(在当前进程完成之前)程序崩溃。有什么方法可以实现快速点击(同时执行多个进程)或者替代解决方案吗?

感谢您的宝贵时间:)

最佳答案

我希望您在 GUI 线程中执行所有这些代码。如果是这样,那么就不会有问题 - 如果您的代码是正确的(它不是)。没有您在问题中提到的“过程”之类的东西。点击由插槽处理,并从列表中的事件处理程序调用。这应该会崩溃,点击将以序列化的方式处理 - 一个接一个。

错误在这里:为什么要将已分配的 UI 指针元素的值重置为零?

ui->damageIdIn = 0;

这是胡说八道。也许您的意思是 ui->damageIdIn->setValue(0)ui->damageIdIn->hide()。然后您继续在

ui->damageIdIn->setValue(temp_int);

它崩溃了。

您的代码中的其他地方也可能存在错误。

关于c++ - 单击两次 listWidget 项目时 Qt 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19261391/

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