Qt Сбой при двойном нажатии на элемент 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);
}
}

Большая часть этого — просто манипуляции со строками. (Вам не нужно изучать этот синтаксис или что-то еще)

Моя проблема в том, что когда пользователь быстро нажимает на другой элемент списка (до завершения текущего процесса), происходит сбой программы. Есть ли способ разрешить быстрые клики (несколько процессов одновременно) или, может быть, альтернативное решение?

Спасибо за ваше время 🙂

0

Решение

Я надеюсь, что вы выполняете весь этот код в потоке GUI. Если это так, то не будет никаких проблем — если ваш код был верным (это не так). Нет такой вещи, как «процесс», который вы упоминаете в своем вопросе. Клики обрабатываются слотом, и они вызываются из обработчика событий в списке. Это не предполагается, что сбой, и щелчки будут обрабатываться в последовательном порядке — один за другим.

Вот ошибка: почему вы сбрасываете значение выделенного элемента указателя интерфейса на ноль?

ui->damageIdIn = 0;

Это нонсенс. Может быть, вы хотите ui->damageIdIn->setValue(0) или же ui->damageIdIn->hide(), Затем вы переходите к использованию этого нулевого значения в

ui->damageIdIn->setValue(temp_int);

и он падает.

У вас также могут быть ошибки в других местах вашего кода.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]