これを追跡するのにしばらく時間がかかりましたが、解決方法がわかりません。
Qt/vtk アプリケーションのメイン メニューの動作がおかしいです。メニューのクリック動作は次のとおりです。
- 最初のクリック: ポップ ダウン
- 2 回目のクリック: ポップアップ
- 3 回目のクリック: 何もしません
- 4 回目のクリック: 再びポップ ダウン
これはそれほど悪くはありませんが、問題は状態が記憶されていることです。そのため、ユーザーがメニューを 2 回クリックした場合 (つまり、手動で閉じた場合)、次にメニュー バーをクリックしても、その間に他の GUI 要素を使用したとしても何も起こりません。これは、煩わしいユーザー エクスペリエンスにつながります。
最小限の失敗例を作成しました。
#include <QAction>
#include <QApplication>
#include <QLabel>
#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QVTKWidget.h>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QMainWindow mainWindow;
QMenu *menu = mainWindow.menuBar()->addMenu("TestMenu");
QAction *action = menu->addAction("TestAction");
// Setting the central widget to QVTKWidget, produces a weirdly
// behaving menu bar:
// First click: pop down
// Second click: pop up
// Third click: does nothing
// Fourth click: pop down again
mainWindow.setCentralWidget(new QVTKWidget());
// Setting the central widget to any other QWidget, like QLabel, produces a
// normally behaving menu bar:
// First click: pop down
// Second click: pop up
// Third click: pop down again
// mainWindow.setCentralWidget(new QLabel("TestLabel"));
mainWindow.show();
return app.exec();
}
QLabel-central-widget がコメント インされ、QVTKWidget-central-widget がコメント アウトされている場合、メニューは正常に動作しています。
これを解決するために次に何をすべきか考えていますか?