弹出界面显示在主窗口中间博主暂时只知道两种方式
第一种:
创建新的对话框时把父窗口的指针传递给对话框
QNewDiglog *dlg = new QNewDiglog(parent);
dlg->show();
弹出的对话框就会自动显示在父窗口的中间
第二种:
创建新对话框时获取父窗口的指针,再获取父窗口原点坐标,计算显示的位置
QWidget *widget = nullptr;
//获取程序所有的widget
QWidgetList widgetList = QApplication::allWidgets();
//获取父窗口指针 此处获取objectName 可根据需求自行判断
for(int i=0; i<widgetList.length(); i++){
if(widgetList.at(i)->objectName() == “MainWindow”){
widget = widgetList.at(i);
}
}
if(widget){
//获取父窗口geometry
QRect rect = widget->geometry();
//计算显示原点
int x = rect.x() + rect.width()/2 – this->width() /2;
int y = rect.y() + rect.height()/2 – this->height();
this->move(x, y);
}
以上方法适合不在父类创建对话框,获取不了父窗口指针时,手动获取父窗口指针。
写得比较简单有不懂的可以发邮箱linkang1024@163.com 一起交流。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!