首页 > 解决方案 > 如何在 Qt 中修复 Popover 消息的大小?

问题描述

我对弹出消息有一个奇怪的问题。我有一个自定义的小部件,可以通过单击这样的信息按钮来作为弹出信息消息:

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();
}

任何帮助将不胜感激,请。

标签: c++qtuser-interfacepopover

解决方案


推荐阅读