Intruder
Intruder23 марта 2020 г. 7:00

Как получить фокус объекта QTableView(не строка или колонка) или как определить находится ли данный объект в фокусе?

QTableView, focusInEvent, focusOutEvent

Всем доброго времени суток!

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

Буду рад помощи от сообщества!
Всем откликнувшимся заранее спасибо за ответ.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

4
ДК
  • 23 марта 2020 г. 7:49
  • (ред.)

Привет. Переопределить во вьюхе event(), которая отображает твои QTableView и сделать при этом евенте блок кнопок.

bool event(QEvent *event)
{
    if(event->type() == QEvent::?) {
        ui->button->setEnabled(false);
        return true;
    }
    else if(event->type() == QEvent::?) {
        ui->button->setEnabled(true);
        return true;
    }
    else
        return ОтЧегоВьюНаследовал::event(event);
}

вот здесь список эвентов
PS: лучше использовать специализированный event(closeEvent(), focusInEvent(), focusOutEvent(), enterEvent(), keyPressEvent(), keyReleaseEvent(), leaveEvent(), mouseDoubleClickEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), moveEvent(), paintEvent(), resizeEvent() и пр)

    Intruder
    • 23 марта 2020 г. 9:08

    Не совсем я понял Вашу подсказку. QTableView располагается в GroupBox, который в свою очередь располагается на вкладке QTabWidget.
    Может я как-то некорректно написал, но кликая в пустом месте на QTableView, предок у него tabWidget, я хочу отработать действие: если QTableView не является активным, тогда выполнять ряд действий. Сейчас этот ряд действий выполняется только тогда, когда я кликну на записи. Как переопределить именно для QTableView, а не для всего QDialog?

      Intruder
      • 23 марта 2020 г. 9:12

      Получается, что мне сначала нужно сделать класс myTableView, который будет наследоваться от QTableView, а в нем переопределить focusInEvent и focusOutEvent методы? Или есть более простой и понятный способ?

        ДК
        • 23 марта 2020 г. 9:15
        • (ред.)

        а. понял. Ну, не уверен на 100%, но наверное можно сделать делегат для этого QTableView, в котором можно использовать уже

        protected:
            bool event(QEvent *event) Q_DECL_OVERRIDE;
        

        а внутри этого метода, то, что я выше описал. Вроде должно получиться!

        class TableViewDelegate : public QTableView
        {
        public:
            explicit TableViewDelegate(QWidget *parent = nullptr);
        protected:
            bool event(QEvent *event) Q_DECL_OVERRIDE;
        };
        

        а этот класс уже и использовать, как обычный QTableView
        Скорее всего вам понадобятся эти евенты: QEvent::Enter, QEvent::Leave

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь
          AD

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:50баллов,
          • Очки рейтинга-4
          m
          • molni99
          • 26 октября 2024 г. 8:37

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:80баллов,
          • Очки рейтинга4
          m
          • molni99
          • 26 октября 2024 г. 8:29

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:20баллов,
          • Очки рейтинга-10
          Последние комментарии
          i
          innorwall15 ноября 2024 г. 3:03
          Qt/C++ - Урок 060. Настройка внешнего вида приложения в рантайме I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
          i
          innorwall14 ноября 2024 г. 19:42
          Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
          i
          innorwall14 ноября 2024 г. 17:09
          Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
          i
          innorwall14 ноября 2024 г. 12:05
          EVILEG-CORE. Использование Google reCAPTCHA 2001; 98 29 34 priligy buy
          Сейчас обсуждают на форуме
          i
          innorwall14 ноября 2024 г. 11:39
          добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
          i
          innorwall11 ноября 2024 г. 18:55
          Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
          9
          9Anonim25 октября 2024 г. 16:10
          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
          ИМ
          Игорь Максимов3 октября 2024 г. 11:05
          Реализация навигации по разделам Спасибо Евгений!

          Следите за нами в социальных сетях