使用Qt,我可以在其父窗口小部件的中心位置打开一个对话框。但是,当我将父窗口小部件移动到右下角并且可能其中心位于屏幕外时,对话框将在屏幕外打开。这使得与对话的交互变得困难。当我发现它时,我可能会特别对待这个案子。如何检测对话框或对话框的一部分是否在屏幕外,以及如何在适当的位置移动对话框?
答案 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);
}
由于在显示窗口之前无法查询窗口的大小,首先应将窗口移动到屏幕外的某个位置,然后显示它然后将其移动到中心。