Qt小部件显示在其他小部件上

时间:2015-01-26 09:19:56

标签: qt user-interface qwidget

我有一些信息/通知小部件应该在某些情况发生时显示。我的想法是让一个隐藏在左上角的小部件,并在需要时显示。问题是,如果我只是放置简单的小部件并显示它,一切都将被移动到右侧,我想要的是在该区域中显示该小部件(它将隐藏那里的内容,但没关系)。 我不能使用堆叠小部件,因为信息小部件与其他小部件的维度不同。如果我只是创建浮动小部件并将其移动到该区域,则在移动主窗口时它不会移动。 有什么方法可以做到吗?

2 个答案:

答案 0 :(得分:2)

只需动态创建和放置小部件即可。避免使用UI来放置窗口小部件,因为窗口小部件的位置由布局管理。

编辑:记得在对话框初始化之后创建小部件。如果您不注意这一点,您的小部件将插入底部。

class Dialog : public QDialog
{
    Q_OBJECT

    std::unique_ptr<Ui::Dialog> _ui;
    QWidget* _widgetOnTheTop;

  public:
    Dialog(QWidget* parent)
      : QDialog(parent), _ui(new Ui::Dialog)
    {
      _ui->setupUi(this);

      _widgetOnTheTop = new QPushButton(this);
      _widgetOnTheTop->setGeometry(10,10,100,35);
      _widgetOnTheTop->show();
    }
};

答案 1 :(得分:0)

查看QDialog创建并在发生错误时执行其中一个,您可以构建它们以使用默认的取消按钮

编辑:对不起,我的意思是QMessageBos,请参阅下面的代码

QMessageBox error_message(QMessageBox::Icon::Critical, "Title of the window","Some Text about the error to show the user", QMessageBox::StandardButtons(QMessageBox::Yes | QMessageBox::Cancel), this);
error_message.exec();