AC
Alexandru CodreanuЖел. 26, 2019, 3:18 Т.Қ.

Всплывающие подсказки через PopUp

Доброго времени суток.
Пишу приложение в настройках которoго есть выбор стиля интерфейса приложения:
1. style default (QT)
2. style modern (css)
... также есть настройка вывода подсказок:
- style default - вывод подсказок через setToolTip("aaa");
- style modern - вывод подсказок реализовал через PopUp руководствуясь вашей темой https://evileg.com/ru/post/146/ (уж очень некрасиво выглядит через setToolTip на фоне сделанного через css)
При выборе стиля "modern" - уведомление и подсказки используют PopUp.
Вывод подсказки через PopUp отрабатывается отлично, но переодически выходит ошибка:

qt.qpa.xcb: internal error:  void QXcbWindow::setNetWmStateOnUnmappedWindow() called on mapped window

Привожу мои действия ниже:
... добавил в PopUp.cpp

void PopUp::showFromGeometry(QPoint p)
{
    setWindowOpacity(0.0);

    animation.setDuration(150);
    animation.setStartValue(0.0);
    animation.setEndValue(1.0);

    QSize s(width(), height());
    setGeometry(QRect(p, s));

    QWidget::show();

    animation.start();
}

void PopUp::hidePop()
{
    QWidget::hide();
}

В ListPacients подключаю

#include "popup.h"

    if (settApp->settingUseNote()){

        ui->buttonAddPacient->setMouseTracking(true);
        ui->buttonAddPacient->installEventFilter(this);

        ui->buttonRemovePacient->setMouseTracking(true);
        ui->buttonRemovePacient->installEventFilter(this);
    }

bool ListPacients::eventFilter(QObject *obj, QEvent *ev)
{

    if (obj == ui->buttonAddPacient){

        if (ev->type() == QEvent::Enter){

            QPoint p = mapToGlobal(QPoint(ui->buttonAddPacient->pos().rx() + ui->buttonAddPacient->width(), 
                                   ui->buttonAddPacient->pos().ry()));

            popUp->setPopupText("Добавить нового пациента.");

            popUp->showFromGeometry(p);
            return true;


        } else if (ev->type() == QEvent::Leave){

            popUp->hidePop();
            return true;

    } else if (obj == ui->buttonRemovePacient){

        if (ev->type() == QEvent::Enter){

            QPoint p = mapToGlobal(QPoint(ui->buttonRemovePacient->pos().rx() + ui->buttonRemovePacient->width(), 
                                  ui->buttonRemovePacient->pos().ry() + ui->buttonRemovePacient->pos().ry() - 6));

            popUp->setPopupText("Удалить пациента из БД.");

            popUp->showFromGeometry(p);
            return true;

        } else if (ev->type() == QEvent::Leave){

            popUp->hidePop();
            return true;
        }

     }

    return false;

}
  1. Подскажите как бороться с ошибкой?
  2. Как правильно вычислить координаты кнопки (думаю что не правильно переданы координаты)?
    Не судите строго за глупые вопросы это мое первое приложение на Qt, перевожу с 1С на Qt/C++.
    Спасибо за понимание.
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

4
Evgenii Legotckoi
  • Қаң. 9, 2020, 4:24 Т.Қ.

Добрый день!

  1. Честно говоря, насчёт ошибки даже и не знаю, вы на что-то экзотическое натолкнулись. В исходниках это скорее варнинг, чем прямо ошибка.
    Возможно, что-то с активностью текущего окна. Но по сути, если это не мешает, то можете игнорировать.
  2. Не могли бы вы уточнить, что конкретно не так с координатами? Почему вы считаете, что они не правильно передаются?
    AC
    • Қаң. 9, 2020, 11:13 Т.Қ.

    Думал, что координаты переданны некорректно из-за этого и ошибка(варнинг) выходит. Попытался использовать PopUp и в других формах, также выводится этот варнинг, хотя отрабатывает хорошо. Погуглил, но не нашел ответов о варнинге (в принципе не критично, но хотелось без варнинга).

      Evgenii Legotckoi
      • Қаң. 10, 2020, 3 Т.Ж.

      Я вас понимаю, но это экзотическая проблема, причём по ходу платформозависимая. Я правильно понимаю, что у Вы используете Linux? На других платформах пробовали собирать проект?

        AC
        • Қаң. 10, 2020, 5:11 Т.Қ.
        • (өңделген)

        Да использую Linux (Debian 10).
        Хотя начинал проект на Windows 7, но возникли проблемы при написание кода которые в Windows 7 отрабатывались хорошо, а вот в Linux возникали проблемы.
        На Windows запускал проект, но в режиме работы. В режиме отладки не запускал. Попытался перенаправить варнинг в логи (на Windows) не вышло. Наверное нужно потестить на Windows-e, но так не хочется.

          Пікірлер

          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
          Кіріңіз немесе Тіркеліңіз
          AD

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

          • Нәтиже:50ұпай,
          • Бағалау ұпайлары-4
          m
          • molni99
          • Қаз. 26, 2024, 1:37 Т.Ж.

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

          • Нәтиже:80ұпай,
          • Бағалау ұпайлары4
          m
          • molni99
          • Қаз. 26, 2024, 1:29 Т.Ж.

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

          • Нәтиже:20ұпай,
          • Бағалау ұпайлары-10
          Соңғы пікірлер
          ИМ
          Игорь МаксимовҚар. 22, 2024, 11:51 Т.Ж.
          Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          Evgenii Legotckoi
          Evgenii LegotckoiҚаз. 31, 2024, 2:37 Т.Қ.
          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
          A
          ALO1ZEҚаз. 19, 2024, 8:19 Т.Ж.
          Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
          ИМ
          Игорь МаксимовҚаз. 5, 2024, 7:51 Т.Ж.
          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
          d
          dblas5Шілде 5, 2024, 11:02 Т.Ж.
          QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
          Енді форумда талқылаңыз
          m
          moogoҚар. 22, 2024, 7:17 Т.Ж.
          Mosquito Spray System Effective Mosquito Systems for Backyard | Eco-Friendly Misting Control Device & Repellent Spray - Moogo ; Upgrade your backyard with our mosquito-repellent device! Our misters conce…
          Evgenii Legotckoi
          Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
          добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
          t
          tonypeachey1Қар. 15, 2024, 6:04 Т.Ж.
          google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
          NSProject
          NSProjectМаусым 4, 2022, 3:49 Т.Ж.
          Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…

          Бізді әлеуметтік желілерде бақылаңыз