Qt 是否加快contextMenu的初始显示?
环境:Qt 5.1 OSX 10.7.5 当收到Qt 是否加快contextMenu的初始显示?,qt,Qt,环境:Qt 5.1 OSX 10.7.5 当收到Qt::RightButton事件时,我正在显示一个上下文菜单 问题:它工作正常,只是初始显示非常慢,可能需要3-5秒才能显示菜单。任何后续显示都是即时的。延迟足够长,因此用户可以认为什么都没有发生 问题:是否有办法预加载或加速contextMenu的初始显示 我已尝试在类构造函数中初始化它: contextMenu = new QMenu(this); QAction *saveAction=contextMenu->addAc
Qt::RightButton
事件时,我正在显示一个上下文菜单
问题:它工作正常,只是初始显示非常慢,可能需要3-5秒才能显示菜单。任何后续显示都是即时的。延迟足够长,因此用户可以认为什么都没有发生
问题:是否有办法预加载或加速contextMenu的初始显示
我已尝试在类构造函数中初始化它:
contextMenu = new QMenu(this);
QAction *saveAction=contextMenu->addAction("Save");
connect(saveAction,SIGNAL(triggered()),this,SLOT(saveSlot()));
我试着将它声明为指针和。。。(不是指针?;-)
这是执行以显示上下文菜单的
mousePressEvent
void RPImageLabel::mousePressEvent(QMouseEvent *event)
{
if (!imageRect.contains(event->pos())) return;
origin = event->pos();
this->setFocus();
if (event->button()==Qt::RightButton){
if (selectionRect.contains(origin))
// contextMenu.exec(this->mapToGlobal(origin));
contextMenu->exec(this->mapToGlobal(origin));
} else {
selectionStarted=true;
selectionRect.setTopLeft(origin);
selectionRect.setBottomRight(origin);
if (rubberBand->isHidden()){
rubberBand->setGeometry(QRect(origin, origin));
rubberBand->show();
repaint();
}
}
}
好的,我通过将Qt Creator中小部件的
contextMenuPolicy
从DefaultContextMenu
更改为ActionsContextMenu
解决了这个问题
我对Qt还不熟悉,所以在这里猜测一下,但也许这使用了Qt上下文菜单而不是OSX菜单?无论如何,它现在立即显示。但是,在某些情况下,它会发出警报:
QNSView mouseDragged:
Internal mouse button tracking invalid (missing Qt::LeftButton)
不清楚到底发生了什么,但我知道已经发生了可能相关的事情
时间花在哪里?它是在Qt内部还是在你的代码中?@rubenvb-我刚刚用完整的
mousePressEvent
方法更新了我的问题。除了可能会使事情变慢的“设置焦点”之外,似乎没有其他东西。
QNSView mouseDragged:
Internal mouse button tracking invalid (missing Qt::LeftButton)