环境:Qt 5.1 OSX 10.7.5
Qt::RightButton
收到事件时,我正在显示 contextMenu 。
问题:它工作正常,只是初始显示非常慢,可能需要 3-5 秒才能显示菜单。任何后续显示都是即时的。延迟足够长,以至于用户可以认为没有发生任何事情。
问题:有没有办法预加载或以其他方式加速 contextMenu 的初始显示?
我试过在我的类构造函数中初始化它:
contextMenu = new QMenu(this);
QAction *saveAction=contextMenu->addAction("Save");
connect(saveAction,SIGNAL(triggered()),this,SLOT(saveSlot()));
我尝试将其声明为指针和...(不是指针?;-)
QMenu *contextMenu;
这是mousePressEvent
执行以显示 contextMenu 的。
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();
}
}
}