@Mercury13
Программист на «си с крестами» и не только

Как отловить момент, когда в QComboBox создаётся редактор?

Пишем компонент на основе QComboBox. Пытаемся сделать его хоть немного универсальным — а для этого нужно прописать установку событий. В том числе событие lineEdit()->textEdited. Изначально этого lineEdit нет, он появляется, когда комбобокс становится editable. Как лучше всего это решить?
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
@Mercury13 Автор вопроса
Программист на «си с крестами» и не только
Опять приходится отвечать своими силами.
void TimedWideComboBox::connectToEditor()
{
    if (!lineEdit())
        return;
    connect(lineEdit(), &QLineEdit::textEdited, this, &This::origDataChanged);
}

bool TimedWideComboBox::event(QEvent* ev)
{
    bool b = Super::event(ev);
    switch (ev->type()) {
    case QEvent::ChildAdded: {
            auto ev1 = static_cast<QChildEvent*>(ev);
            if (ev1->child() == lineEdit()) {
                connectToEditor();
                return true;
            }
        } break;
    default:;
    }
    return b;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы