如何让整个对话框显示在屏幕上?

时间:2014-04-08 13:42:53

标签: qt

使用Qt,我可以在其父窗口小部件的中心位置打开一个对话框。但是,当我将父窗口小部件移动到右下角并且可能其中心位于屏幕外时,对话框将在屏幕外打开。这使得与对话的交互变得困难。当我发现它时,我可能会特别对待这个案子。如何检测对话框或对话框的一部分是否在屏幕外,以及如何在适当的位置移动对话框?

2 个答案:

答案 0 :(得分:1)

  

如何检测对话框或对话框的一部分是否在屏幕外

使用QDesktopWidget来获取屏幕坐标

  

如何在适当的位置移动对话框?

使用QWidget::move方法

可能,你根本不应该使用弹出窗口?或者你应该为操作系统提供定位管理?

答案 1 :(得分:1)

您可以使用move()将对话框置于屏幕中央:

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

    QRect screenGeometry(QApplication::desktop()->screenGeometry());
    this->move(-50000,-50000);
    this->show();
    this->move((screenGeometry.width() - this->width()) / 2.0,
                  (screenGeometry.height() - this->height()) / 2.0);

}

由于在显示窗口之前无法查询窗口的大小,首先应将窗口移动到屏幕外的某个位置,然后显示它然后将其移动到中心。