首页 > 解决方案 > 在 QT 中创建浮动框 UI 的方法

问题描述

在此处输入图像描述

“支持”气泡的作用类似于工具提示,当单击按钮时,它会出现在按钮旁边。

这个泡沫是如何产生的?它允许将小部件放置在自身内部。这是一个小部件本身还是某种浮动布局?我是 QT 的新手,不知道如何解决这个问题,使用哪个小部件来实现这一点?

标签: pythonqt

解决方案


TL;DR:一个简单的QWidget,按需显示,并以编程方式放置在您定位的按钮旁边。

其他选项:

  • QMenu和相关的类可以用来创建你自己的菜单,但是定制起来会很痛苦,而且对于你的情况可能不够灵活
  • QDialog当您想要一个可以拖动的模态或独立窗口等待用户输入时,这是完美的匹配。但是你的是静态的而不是模态的
  • QWidget是 Qt 中所有小部件的基类,它是完全多用途的,可以用作其他小部件的容器。QLayout然后为您的内容提供结构(对齐,尺寸,...)

如何

  • (可选)在 Qt Designer 中创建小部件的内容
  • 创建 UI 时实例化对话框
  • 连接到按钮“点击”信号

    connect(mybutton, &QPushButton::clicked, this, &MainWindow::showXButtonTooltip);
    
  • 放置您的工具提示并显示它

    void MainWindow::showXButtonTooltip()
    {
        // Get your button position relative to the common
        // parent with QWidget::pos() and mapToParent.
        // Or just use a fixed value...
        QPoint position;
        m_tooltipWidget.move(position.x, position.y);
        m_tooltipWidget.show();
    }
    

注意不要将工具箱放在布局中,否则您将无法“移动”它,因为这是布局的责任。


推荐阅读