Qt 鼠标右键菜单显示不超出屏幕底部
#include <QDesktopWidget>
void MainWindow::tableWidget_test_showMenu(const QPoint pos)
{
tableWidget_test_menu->move(cursor().pos());
tableWidget_test_menu->show();
int x = pos.x();
int y = pos.y();
QDesktopWidget* desktopWidget =QApplication::desktop();
QRect desktopRect =desktopWidget->screenGeometry(); // 获取屏幕信息
qDebug() << "desktopRect: " << desktopRect;
QPoint global = tableWidget_test_menu->mapToGlobal(QPoint(0, tableWidget_test_menu->height())); // 得到右键菜单左下角的坐标
if (global.y() > desktopRect.height()) { // 超过屏幕底部
// 向上移动到刚好和屏幕底部齐平
global.setY(desktopRect.height() - tableWidget_test_menu->height());
} else {
// 恢复原来位置,不移动
global.setY(global.y() - tableWidget_test_menu->height());
}
tableWidget_test_menu->move(global);
tableWidget_test_menu->show();
}
当菜单会超出屏幕底部时,会向上移动:
当菜单不超出屏幕底部时,就正常显示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗