Qt6在macOS下调用setGeometry设置顶部坐标失效问题
问题排查与修复
你的核心错误是调用了availableGeometry()但未将返回值赋值给变量s,代码里的s要么是未定义的垃圾值,要么是之前残留的旧数据,完全没用到你期望的可用屏幕区域坐标,导致位置计算彻底错误。
修正后的代码:
void QXDialog::showLeftAligned(int gap) { const QRect screenAvailable = QGuiApplication::primaryScreen()->availableGeometry(); setGeometry( screenAvailable.x() + gap, screenAvailable.y() + gap, width(), screenAvailable.height() - 2 * gap ); QDialog::show(); }
额外优化建议:
- 若程序支持多屏幕,优先使用
this->screen()->availableGeometry()替代主屏幕,确保窗口在任意屏幕上都能正确计算位置; - 用
QRect::adjusted()简化几何调整,代码更简洁可读:setGeometry(screenAvailable.adjusted(gap, gap, -gap, -gap));
内容的提问来源于stack exchange,提问作者coterobarros
相关产品推荐
相关产品推荐

