QMainMenu ведет себя странно, если QVTKWidget является центральным виджетом QMainWindow

Хорошо, мне потребовалось некоторое время, чтобы отследить это, но я понятия не имею, как решить это.

Главное меню в моем приложении 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 закомментирован, меню работает нормально.

Есть идеи, что делать дальше, чтобы решить эту проблему?

0

Решение

Ошибка больше не возникает на Qt 5.4.1 и vtk 6.2.0.

(ссылка на трекер ошибок vtk: http://www.vtk.org/Bug/view.php?id=15013)

0

Другие решения


По вопросам рекламы [email protected]