Как я могу исправить размер сообщения Popover в Qt? - PullRequest
1 голос
/ 04 мая 2020

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

void SystemConfigPackageAuthorizationWidget::onReceivingAgenciesInfoButtonClicked()
{
    QString bodyText = tr("Display of Receiving Agency packages with enable/disable status for selected user type.");
    PopOver::showText(PopOver::BottomRightPointUp, ui->ReceivingAgenciesTitle->text(), bodyText, (QToolButton*)sender());
}

Проблема в том, что всплывающее окно изменяет свой размер 3 раза, если нажать на кнопку более 3 раз подряд раз до исправления собственного размера.

Ниже приведена showText() функция:

void PopOver::showText(PopOver::PositionStyle style, const QString & title, const QString & description, QWidget *targetObject)
{
    QPoint position = targetObject->mapToGlobal(QPoint(0,0));
    if (PopOver::instance)
    {
        PopOver::instance->setText(title, description);
        PopOver::instance->setPositionStyle(style);
        PopOver::instance->placeTip(position, targetObject);
        PopOver::instance->show();
    }
    else
    {
        qDebug() << "PopOver instance does not exist.  It should be created first.";
    }
}

После отладки я обнаружил, что проблема заключается в setText() функции.

void PopOverPvt::setText(const QString & title, const QString & description)
{
    Title->setText(title);
    Description->setText(description);
    resizeWindow();
}

Особенно в resizeWindow():

void PopOverPvt::resizeWindow(void)
{
    Title->adjustSize();
    Description->adjustSize();
    VideoWidget->adjustSize();
    VideoFrame->adjustSize();
    TextFrame->adjustSize();
    box->adjustSize();
    adjustSize();
}

Любая помощь будет оценена, пожалуйста.

...