QT Gridlayout Элемент не выделяется после нажатия?

У меня есть макет сетки, и внутри я распределяю макет в четырех разделах. Итак, я хочу выделить вид, нажав на область просмотра. Это мой вид изображения макета сетки:

1 ответ

Решение

Примечание. Ваш вопрос не очень понятен, поэтому я постараюсь найти правильное решение для вас.

причина

Политика фокуса QOpenGLWidget установлена ​​в Qt::NoFocus по умолчанию. Кроме того, этот виджет не поддерживает таблицу стилей.

Решение

Подкласс QOpenGLWidget, измените политику фокуса на setFocusPolicy(Qt::StrongFocus); и переопределить paintEvent как это:

void OpenGLWidget::paintEvent(QPaintEvent *event)
{
    QOpenGLWidget::paintEvent(event);

    QPainter painter(this);

    painter.setPen(QPen(QBrush(Qt::magenta), 2));

    if (hasFocus())
        painter.drawRect(QRect(1, 1, width() - 2, height() - 2));
}

пример

Чтобы продемонстрировать, как реализовать это в приложении, я подготовил для вас рабочий пример. Код доступен на GitHub.

Результат

Это даст вам красивую фиолетовую рамку на краю щелкающего вида:

введите описание изображения здесь

Другие вопросы по тегам