Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

My app crashes on the laptop and not on the desktop



  • Hello everyone. I discovered that the application I'm writing using the Qt framework works perfectly on the desktop where I developed it but crashes on the laptop. In short:
    In the main window there is a QTabWidget which I use to switch screens based on the selected item. When I switch to the screen where I use a 3d window enclosed in a QWidget the gui freezes on this screen and, even clicking on the other elements of the QTabWidget, the GUI stays on that view. If I click on a particular item, the app stops responding. If I replace the QWidget that encloses the 3d window with a simple QWidget there is no problem. Obviously without the code I'm not very helpful in looking for a possible solution, but can you think of anything that can help me?

    self.view = Qt3DWindow()
    .
    .
    .
    self.centralWidget = QWidget.createWindowContainer(self.view) #If I replace with QWidget () it works
    
    

    This is the function I call when I click an element of the QTabWidget

        def tabChanged(self):
            print(self.tab_holder.currentIndex())
            if self.tab_holder.currentIndex() == 1:
                self.segmentationTab.setContents()
            elif self.tab_holder.currentIndex() == 2:
                self.labelingTab.setFocus()
                self.labelingTab.setContents()
            elif self.tab_holder.currentIndex() == 3:
                self.reconstructionTab.setContents()
            else:
                pass
    

    This is setScene of ReconstructionWidget, which is the widget creates problems if I select it

    def setContents(self):
           print('Okay')
    

  • Lifetime Qt Champion

    Hi,

    Which version of Qt are you using ?
    Which OS ?
    Which graphics driver ?



  • Hello, I'm using PyQt 5.15.2 and PyQt3D 5.15.2 on Windows 10 (Both machines).
    I have an amd card on the desktop where I don't have this problem and an nvidia gtx1050ti on the laptop where it happens.

    Nvidia driver version: 457.51


  • Lifetime Qt Champion

    How did you install these packages ?

    You might also want to check if your drivers are the latest and if so, downgrade to test if they introduced a bug.



  • I installed the packages via pip. However, creating a standalone executable with cxfreeze is also the same. I also confirm that the same happens on my friend's laptop, so at the moment it doesn't happen only on my desktop pc


  • Lifetime Qt Champion

    Then you should check with the drivers.
    Does your friend laptop have the same specs as yours ?



  • No, it has different hardware, but the video card is nvidia (949mx). At this point I'm wondering, will it be some library that I don't have on the laptop and cxfreeze didn't pack? How can I check, and if so, package the whole application correctly?


  • Lifetime Qt Champion

    The hardcore way would be to setup a minimal Python environment on one of these laptops to check that.

    By crash do you mean it does not start at all ?



  • It starts up, and I can browse widgets that don't have a Qt3DWindow. If I select ReconstructionWidget, which has this type of window, the GUI stays stuck on the same point if I select other widgets . However I can interact with the elements of the other widgets, I just don't see them because they are covered by the one with the 3d window. I can't even see the button animations, for example when I hover the mouse over them. Also, selecting the SegmentationWidget the app stops responding and I am forced to close. There are no errors in the terminal.


  • Lifetime Qt Champion

    Right, sorry, you wrote that in your initial post...

    I would go with setting up a Python environment to check if it's working there.



  • No problem, thanks for your time!
    So I set up a new python environment. Do I install the packages gradually?



  • I have implemented a basic app with a 3d window and a torus mesh, it works fine.
    In the old app, I found that everything works if I comment

    self.view.setRootEntity(self.rootEntity)
    

    where self.rootEntity is a QEntity()

    UPDATE:
    It doesn't give problems when I set the root entity, but when I insert mesh, transform and material to a torus entity created as follows:

    self.material = QPhongMaterial(self.rootEntity)
    self.torusEntity = QEntity(self.rootEntity)
    self.torusMesh = QTorusMesh()
    self.torusMesh.setRadius(5)
    self.torusMesh.setMinorRadius(1)
    self.torusMesh.setRings(100)
    self.torusMesh.setSlices(20)
    
    self.torusTransform = QTransform()
    self.torusTransform.setScale3D(QVector3D(1.0, 1.0, 1.0))
    self.torusTransform.setRotation(QQuaternion.fromAxisAndAngle(QVector3D(1, 0, 0), 45))
    
    self.torusEntity.addComponent(self.torusMesh)         # <-----   Problems from here
    self.torusEntity.addComponent(self.torusTransform)
    self.torusEntity.addComponent(self.material)
    

  • Lifetime Qt Champion

    Can you provide a minimal runnable script that triggers this ?


Log in to reply