You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:42:43