環境: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();
}
}
}