Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: titan83 от Сентябрь 04, 2017, 15:30



Название: Пропадает первый event в модальном QDialog
Отправлено: titan83 от Сентябрь 04, 2017, 15:30
Коллеги, приветсвую.
К сожалению, вопрос срочный, поэтому пишу в надежде.
В общем, тут пришлось в авральном порядке бежать с X11 на EGL, а заодно и с 5.4.2 на 5.9.1. А в программе была виртуальная клава. Но в новой кутэ она уже не работала, поэтому экстренно колхозю свой аналог.
Cделал, вроде работает, но первый тык по тачскину пропадает, а остальное уже отрабатывает правильно.
Так ловлю клик по лайнедиту
Код:
bool QWshLogin::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::MouseButtonPress)
        if (object == ui->lineEdit_Usercode) {
            emit requestVirtualKeyboard(ui->lineEdit_Usercode, false);
            return true;
        }

    return false;
}
Так отрабатываю открытие окна
Код:
    if (useCurrentText == true)
        ui->edValue->setText(lineEdit->text());
    else
        ui->edValue->setText("");

    show();
    this->activateWindow();
    this->raise();
    ui->edValue->setFocus();
Вcе, что после show() - это попытки исправить ситуацию. Но все по-прежнему.
Хотя лайнедит после setFocus() становится визуально активным (курсор мигает).
Я так понимаю, что проблема в том, что я прерываю своим сигналом обработку сообщений, поэтому-то у меня и теряется (или уходит в другую очередь?) первое сообщение, но как поправить не могу сообразить.
Причем, если окно немодальное, то все работает правильно.
Буду благодарен за подсказки.