如果QVTKWidget是QMainWindow的中心小部件,QMainMenu表现得很奇怪

时间:2014-09-11 21:47:38

标签: c++ qt vtk qvtkwidget

好吧我花了一段时间来追踪这一点,但我不知道如何解决它。

我的Qt / vtk应用程序中的主菜单表现得非常奇怪。单击菜单上的行为如下:

  • 首先点击:弹出
  • 第二次点击:弹出
  • 第三次点击:什么都不做
  • 第四次点击:再次弹出

现在这不会坏,但问题是状态会被记住。因此,如果用户单击菜单两次 - 即手动关闭它 - 下一次单击菜单栏将不会执行任何操作,即使他在其间使用了其他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被注释掉,则菜单表现正常。

有什么想法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

在Qt 5.4.1和vtk 6.2.0上不再出现Bug。

(vtk bug tracker link:http://www.vtk.org/Bug/view.php?id=15013