Opened 4 years ago

Closed 4 years ago

#6086 closed defect (fixed)

VR menus broken with Qt 6

Reported by: goddard@… Owned by: Tom Goddard
Priority: normal Milestone:
Component: VR Version:
Keywords: Cc: Zach Pearson
Blocked By: Blocking:
Notify when closed: Platform: all
Project: ChimeraX

Description

The following bug report has been submitted:
Platform:        Windows-10-10.0.22000
ChimeraX Version: 1.4.dev202202040724 (2022-02-04 07:24:35 UTC)
Description
Clicked on Presets menu in VR with Qt 6 ChimeraX.

Log:
UCSF ChimeraX version: 1.4.dev202202040724 (2022-02-04)  
© 2016-2021 Regents of the University of California. All rights reserved.  
How to cite UCSF ChimeraX  

> open 7knq format mmcif fromDatabase pdb

7knq title:  
SARM1 Octamer [more info...]  
  
Chain information for 7knq #1  
---  
Chain | Description | UniProt  
A B C D E F G H | NAD(+) hydrolase SARM1 | SARM1_HUMAN  
  

> vr true

> lighting simple

started SteamVR rendering  

> lighting soft

> show cartoons

> hide atoms

> color bypolymer

Traceback (most recent call last):  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\core\triggerset.py", line 134, in invoke  
return self._func(self._name, data)  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 802, in _next_frame  
self.process_controller_events()  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 830, in process_controller_events  
self.process_controller_buttons()  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 857, in process_controller_buttons  
hc.process_event(e)  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 2671, in process_event  
if ui.process_hand_controller_button_event(self, b, pressed, released):  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 1723, in
process_hand_controller_button_event  
panel.press(window_xy)  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 2243, in press  
return self._click('press', window_xy)  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 2254, in _click  
w = self._post_mouse_event(type, window_xy)  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 2301, in _post_mouse_event  
me = QMouseEvent(et, pos, button, buttons, Qt.NoModifier)  
TypeError: arguments did not match any overloaded call:  
QMouseEvent(QEvent.Type, QPointF, Qt.MouseButton, Qt.MouseButton,
Qt.KeyboardModifier, device: QPointingDevice =
QPointingDevice.primaryPointingDevice()): argument 2 has unexpected type
'QPoint'  
QMouseEvent(QEvent.Type, QPointF, QPointF, Qt.MouseButton, Qt.MouseButton,
Qt.KeyboardModifier, device: QPointingDevice =
QPointingDevice.primaryPointingDevice()): argument 2 has unexpected type
'QPoint'  
QMouseEvent(QEvent.Type, QPointF, QPointF, QPointF, Qt.MouseButton,
Qt.MouseButton, Qt.KeyboardModifier, device: QPointingDevice =
QPointingDevice.primaryPointingDevice()): argument 2 has unexpected type
'QPoint'  
  
Error processing trigger "new frame":  
TypeError: arguments did not match any overloaded call:  
QMouseEvent(QEvent.Type, QPointF, Qt.MouseButton, Qt.MouseButton,
Qt.KeyboardModifier, device: QPointingDevice =
QPointingDevice.primaryPointingDevice()): argument 2 has unexpected type
'QPoint'  
QMouseEvent(QEvent.Type, QPointF, QPointF, Qt.MouseButton, Qt.MouseButton,
Qt.KeyboardModifier, device: QPointingDevice =
QPointingDevice.primaryPointingDevice()): argument 2 has unexpected type
'QPoint'  
QMouseEvent(QEvent.Type, QPointF, QPointF, QPointF, Qt.MouseButton,
Qt.MouseButton, Qt.KeyboardModifier, device: QPointingDevice =
QPointingDevice.primaryPointingDevice()): argument 2 has unexpected type
'QPoint'  
  
File "C:\Program Files\ChimeraX-qt6-Feb-4-2022\bin\lib\site-
packages\chimerax\vive\vr.py", line 2301, in _post_mouse_event  
me = QMouseEvent(et, pos, button, buttons, Qt.NoModifier)  
  
See log for complete Python traceback.  
  




OpenGL version: 3.3.0 NVIDIA 472.08
OpenGL renderer: NVIDIA GeForce RTX 3090/PCIe/SSE2
OpenGL vendor: NVIDIA Corporation

Locale: en_US.cp1252
Qt version: PyQt6 6.2.3, Qt 6.2.3
Qt platform: windows

Manufacturer: HP
Model: OMEN 30L Desktop GT13-0xxx
OS: Microsoft Windows 11 Pro (Build 22000)
Memory: 68,576,903,168
MaxProcessMemory: 137,438,953,344
CPU: 20 Intel(R) Core(TM) i9-10850K CPU @ 3.60GHz
OSLanguage: en-US

Installed Packages:
    alabaster: 0.7.12
    appdirs: 1.4.4
    Babel: 2.9.1
    backcall: 0.2.0
    blockdiag: 3.0.0
    certifi: 2021.10.8
    cftime: 1.5.2
    charset-normalizer: 2.0.11
    ChimeraX-AddCharge: 1.2.3
    ChimeraX-AddH: 2.1.11
    ChimeraX-AlignmentAlgorithms: 2.0
    ChimeraX-AlignmentHdrs: 3.2
    ChimeraX-AlignmentMatrices: 2.0
    ChimeraX-Alignments: 2.2.3
    ChimeraX-AlphaFold: 1.0
    ChimeraX-AltlocExplorer: 1.0.1
    ChimeraX-AmberInfo: 1.0
    ChimeraX-Arrays: 1.0
    ChimeraX-Atomic: 1.35.1
    ChimeraX-AtomicLibrary: 5.0
    ChimeraX-AtomSearch: 2.0
    ChimeraX-AtomSearchLibrary: 1.0
    ChimeraX-AxesPlanes: 2.1
    ChimeraX-BasicActions: 1.1
    ChimeraX-BILD: 1.0
    ChimeraX-BlastProtein: 2.0
    ChimeraX-BondRot: 2.0
    ChimeraX-BugReporter: 1.0
    ChimeraX-BuildStructure: 2.6.1
    ChimeraX-Bumps: 1.0
    ChimeraX-BundleBuilder: 1.1
    ChimeraX-ButtonPanel: 1.0
    ChimeraX-CageBuilder: 1.0
    ChimeraX-CellPack: 1.0
    ChimeraX-Centroids: 1.2
    ChimeraX-ChemGroup: 2.0
    ChimeraX-Clashes: 2.2.2
    ChimeraX-ColorActions: 1.0
    ChimeraX-ColorGlobe: 1.0
    ChimeraX-ColorKey: 1.5.1
    ChimeraX-CommandLine: 1.2
    ChimeraX-ConnectStructure: 2.0
    ChimeraX-Contacts: 1.0
    ChimeraX-Core: 1.4.dev202202040724
    ChimeraX-CoreFormats: 1.1
    ChimeraX-coulombic: 1.3.2
    ChimeraX-Crosslinks: 1.0
    ChimeraX-Crystal: 1.0
    ChimeraX-CrystalContacts: 1.0
    ChimeraX-DataFormats: 1.2.2
    ChimeraX-Dicom: 1.0
    ChimeraX-DistMonitor: 1.1.5
    ChimeraX-Dssp: 2.0
    ChimeraX-EMDB-SFF: 1.0
    ChimeraX-ExperimentalCommands: 1.0
    ChimeraX-FileHistory: 1.0
    ChimeraX-FunctionKey: 1.0
    ChimeraX-Geometry: 1.1
    ChimeraX-gltf: 1.0
    ChimeraX-Graphics: 1.1
    ChimeraX-Hbonds: 2.1.2
    ChimeraX-Help: 1.2
    ChimeraX-HKCage: 1.3
    ChimeraX-IHM: 1.1
    ChimeraX-ImageFormats: 1.2
    ChimeraX-IMOD: 1.0
    ChimeraX-IO: 1.0.1
    ChimeraX-ItemsInspection: 1.0
    ChimeraX-Label: 1.1
    ChimeraX-ListInfo: 1.1.1
    ChimeraX-Log: 1.1.5
    ChimeraX-LookingGlass: 1.1
    ChimeraX-Maestro: 1.8.1
    ChimeraX-Map: 1.1
    ChimeraX-MapData: 2.0
    ChimeraX-MapEraser: 1.0
    ChimeraX-MapFilter: 2.0
    ChimeraX-MapFit: 2.0
    ChimeraX-MapSeries: 2.1
    ChimeraX-Markers: 1.0
    ChimeraX-Mask: 1.0
    ChimeraX-MatchMaker: 2.0.6
    ChimeraX-MDcrds: 2.6
    ChimeraX-MedicalToolbar: 1.0.1
    ChimeraX-Meeting: 1.0
    ChimeraX-MLP: 1.1
    ChimeraX-mmCIF: 2.6
    ChimeraX-MMTF: 2.1
    ChimeraX-Modeller: 1.5.1
    ChimeraX-ModelPanel: 1.3.1
    ChimeraX-ModelSeries: 1.0
    ChimeraX-Mol2: 2.0
    ChimeraX-Morph: 1.0
    ChimeraX-MouseModes: 1.1
    ChimeraX-Movie: 1.0
    ChimeraX-Neuron: 1.0
    ChimeraX-Nucleotides: 2.0.2
    ChimeraX-OpenCommand: 1.8
    ChimeraX-PDB: 2.6.5
    ChimeraX-PDBBio: 1.0
    ChimeraX-PDBLibrary: 1.0.2
    ChimeraX-PDBMatrices: 1.0
    ChimeraX-PickBlobs: 1.0
    ChimeraX-Positions: 1.0
    ChimeraX-PresetMgr: 1.1
    ChimeraX-PubChem: 2.1
    ChimeraX-ReadPbonds: 1.0.1
    ChimeraX-Registration: 1.1
    ChimeraX-RemoteControl: 1.0
    ChimeraX-ResidueFit: 1.0
    ChimeraX-RestServer: 1.1
    ChimeraX-RNALayout: 1.0
    ChimeraX-RotamerLibMgr: 2.0.1
    ChimeraX-RotamerLibsDunbrack: 2.0
    ChimeraX-RotamerLibsDynameomics: 2.0
    ChimeraX-RotamerLibsRichardson: 2.0
    ChimeraX-SaveCommand: 1.5
    ChimeraX-SchemeMgr: 1.0
    ChimeraX-SDF: 2.0
    ChimeraX-Segger: 1.0
    ChimeraX-Segment: 1.0
    ChimeraX-SelInspector: 1.0
    ChimeraX-SeqView: 2.4.6
    ChimeraX-Shape: 1.0.1
    ChimeraX-Shell: 1.0
    ChimeraX-Shortcuts: 1.1
    ChimeraX-ShowAttr: 1.0
    ChimeraX-ShowSequences: 1.0
    ChimeraX-SideView: 1.0
    ChimeraX-Smiles: 2.1
    ChimeraX-SmoothLines: 1.0
    ChimeraX-SpaceNavigator: 1.0
    ChimeraX-StdCommands: 1.7.6
    ChimeraX-STL: 1.0
    ChimeraX-Storm: 1.0
    ChimeraX-StructMeasure: 1.0.1
    ChimeraX-Struts: 1.0.1
    ChimeraX-Surface: 1.0
    ChimeraX-SwapAA: 2.0
    ChimeraX-SwapRes: 2.1.1
    ChimeraX-TapeMeasure: 1.0
    ChimeraX-Test: 1.0
    ChimeraX-Toolbar: 1.1
    ChimeraX-ToolshedUtils: 1.2.1
    ChimeraX-Tug: 1.0
    ChimeraX-UI: 1.16
    ChimeraX-uniprot: 2.2
    ChimeraX-UnitCell: 1.0
    ChimeraX-ViewDockX: 1.1
    ChimeraX-VIPERdb: 1.0
    ChimeraX-Vive: 1.1
    ChimeraX-VolumeMenu: 1.0
    ChimeraX-VTK: 1.0
    ChimeraX-WavefrontOBJ: 1.0
    ChimeraX-WebCam: 1.0
    ChimeraX-WebServices: 1.0
    ChimeraX-Zone: 1.0
    colorama: 0.4.4
    comtypes: 1.1.10
    cxservices: 1.1
    cycler: 0.11.0
    Cython: 0.29.26
    debugpy: 1.5.1
    decorator: 5.1.1
    docutils: 0.17.1
    entrypoints: 0.4
    filelock: 3.4.2
    fonttools: 4.29.1
    funcparserlib: 1.0.0a0
    grako: 3.16.5
    h5py: 3.6.0
    html2text: 2020.1.16
    idna: 3.3
    ihm: 0.26
    imagecodecs: 2021.11.20
    imagesize: 1.3.0
    ipykernel: 6.6.1
    ipython: 7.31.1
    ipython-genutils: 0.2.0
    jedi: 0.18.1
    Jinja2: 3.0.3
    jupyter-client: 7.1.0
    jupyter-core: 4.9.1
    kiwisolver: 1.3.2
    line-profiler: 3.4.0
    lxml: 4.7.1
    lz4: 3.1.10
    MarkupSafe: 2.0.1
    matplotlib: 3.5.1
    matplotlib-inline: 0.1.3
    msgpack: 1.0.3
    nest-asyncio: 1.5.4
    netCDF4: 1.5.8
    networkx: 2.6.3
    numexpr: 2.8.1
    numpy: 1.22.1
    openvr: 1.16.802
    packaging: 21.3
    ParmEd: 3.4.3
    parso: 0.8.3
    pickleshare: 0.7.5
    Pillow: 9.0.0
    pip: 21.3.1
    pkginfo: 1.8.2
    prompt-toolkit: 3.0.26
    psutil: 5.9.0
    pycollada: 0.7.2
    pydicom: 2.2.2
    Pygments: 2.11.2
    PyOpenGL: 3.1.5
    PyOpenGL-accelerate: 3.1.5
    pyparsing: 3.0.7
    PyQt6-commercial: 6.2.3
    PyQt6-sip: 13.2.0
    PyQt6-WebEngine-commercial: 6.2.1
    python-dateutil: 2.8.2
    pytz: 2021.3
    pywin32: 303
    pyzmq: 22.3.0
    qtconsole: 5.2.2
    QtPy: 2.0.1
    RandomWords: 0.3.0
    requests: 2.27.1
    scipy: 1.7.3
    setuptools: 59.8.0
    sfftk-rw: 0.7.1
    six: 1.16.0
    snowballstemmer: 2.2.0
    sortedcontainers: 2.4.0
    Sphinx: 4.3.2
    sphinx-autodoc-typehints: 1.15.2
    sphinxcontrib-applehelp: 1.0.2
    sphinxcontrib-blockdiag: 3.0.0
    sphinxcontrib-devhelp: 1.0.2
    sphinxcontrib-htmlhelp: 2.0.0
    sphinxcontrib-jsmath: 1.0.1
    sphinxcontrib-qthelp: 1.0.3
    sphinxcontrib-serializinghtml: 1.1.5
    suds-community: 1.0.0
    tables: 3.7.0
    tifffile: 2021.11.2
    tinyarray: 1.2.4
    tornado: 6.1
    traitlets: 5.1.1
    urllib3: 1.26.8
    wcwidth: 0.2.5
    webcolors: 1.11.1
    wheel: 0.37.1
    wheel-filename: 1.3.0
    WMI: 1.5.1

Change History (7)

comment:1 by Tom Goddard, 4 years ago

Component: UnassignedVR
Owner: set to Tom Goddard
Platform: all
Project: ChimeraX
Status: newassigned
Summary: ChimeraX bug report submissionVR menus broken with Qt 6

comment:2 by Tom Goddard, 4 years ago

The menus worked with ChimeraX 1.3 and Qt 5 on same machine. Machine is Windows 11.

comment:3 by Zach Pearson, 4 years ago

Cc: Tom Goddard added
Owner: changed from Tom Goddard to Zach Pearson

in reply to:  4 ; comment:4 by goddard@…, 4 years ago

This may need to be fixed by me because it is internals of the VR code and will need VR testing.

comment:5 by Zach Pearson, 4 years ago

Cc: Zach Pearson added; Tom Goddard removed
Owner: changed from Zach Pearson to Tom Goddard

I see; don't let me step on your toes. From the traceback it looked like it was just going to be updating one of those new enums in Qt6, but I can reassign the ticket back to you.

in reply to:  6 ; comment:6 by goddard@…, 4 years ago

The QMouseEvent constructor no longer has the version with arguments that the VR code is using.  It needs another mouse position in global coordinates.  But it wants float rather than integer screen positions and the VR code is using the old style integer, so several places should be updated to use float if possible and if Qt 5 supports.  Not too difficult but changes in several places will require a number of different tests in VR.

comment:7 by Tom Goddard, 4 years ago

Resolution: fixed
Status: assignedclosed

Fixed.

Qt6 QMouseEvent constructors require a local widget position and a screen position. Also had to fix QPoint vs QPointF types. New code tested in Qt5 and Qt6.

Note: See TracTickets for help on using tickets.