赞
踩
参考博客 : https://blog.csdn.net/goforwardtostep/article/details/53494800
MyTitleBar类抽象定义了自定义标题栏,使用起来相对方便。但是在多屏情况下,窗口初次显示只能在主屏幕上,如果拖到其他屏幕上最大化,还会回到主屏。
处理方式如下:
获取当前屏幕的索引
/* MyTitleBar 的 mouseMoveEvent 函数*/
void MyTitleBar::mouseMoveEvent(QMouseEvent *event) {
if (_isPressed) {
QPoint movePoint = event->globalPos() - _startMovePos;
QPoint widgetPos = this->parentWidget()->pos();
_startMovePos = event->globalPos();
this->parentWidget()->move(widgetPos.x() + movePoint.x(), widgetPos.y() + movePoint.y());
// 每次移动后 获取当前屏幕的索引
currentScreenIndex = QApplication::desktop()->screenNumber(this->parentWidget);
}
return QWidget::mouseMoveEvent(event);
}
根据索引获取屏幕大小信息(QRect)
/*使用MyTitleBar的窗口*/
void MainPage::onButtonMaxClicked() {
_titleBar->saveRestoreInfo(this->pos(),QSize(this->width(),this->height()));
QRect desktopRect = QApplication::desktop()->availableGeometry(_titleBar->getCurrentScreenIndex()); // availableGeometry(int) 传入索引值,获取目标屏幕的QRect
QRect factRect = QRect(desktopRect.x()-3,desktopRect.y()-3, desktopRect.width()+6,desktopRect.height()+6);
setGeometry(factRect);
}
注意事项:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。