Graphic view and ProxyWidget ... signal problem?
-
Hi everyone.
I am working on a UI which needs a lot of freedom in the layout. The way I decided to do so is basically to use a grapich view and then control the grapich view items positions manually with
a layout I will write. If needed I can go in more detail in what I want to achieve.
Now every Item is basically a sub UI , so I use a ProxyWidget to feed a widget I want in the item.
It works fine but I get several problem.!http://s22.postimg.org/wwb57rd35/image.jpg(demo)!
The drag doesnt work (of course the item is set as draggable) and I cannot interact with any of the
inner widgets of the item, like the line edit.I might guess this is a signal related problem of the grapich view consuming the events or viceversa?
Anyone got an idea about that?
Cheers
M.PS I can provide snipped of code if needed even tho for now is just a really rough test.
-
Hi,
You should also add which combo of Qt/OS you are using.
The code snippet is a good idea, it will help people spot something
-
HI man you are totally right. I also forgot to mention that this is actually pyside and not qt stand alone.
Reguarding the os I got same exact problem in both Win 7 and Linux (CentOs) also same problem with standalone pyside and the pyside shipped with Autodesk Maya.
I removed the maya widget stuff and create quickly a test widget , still I cannot use the internal widgets
!http://s1.postimg.org/66g3rzh4v/ui_Problem.jpg(problem)!Here is the code, it is super standard, the test widgets it s translated in python by pyside-uic and the test win is super simple like in the exampples.
So i am just creating the proxy and give it to the scene thats it@##### TEST WIDGET ########
class TestWidget(QtGui.QWidget) :
def init(self , parent = None) :
QtGui.QWidget.init(self,parent)
self.setObjectName("Form")
self.resize(270, 149)
self.verticalLayout = QtGui.QVBoxLayout(self)
self.verticalLayout.setObjectName("verticalLayout")
self.groupBox = QtGui.QGroupBox(self)
self.groupBox.setObjectName("groupBox")
self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox)
self.horizontalLayout.setObjectName("horizontalLayout")
self.pushButton = QtGui.QPushButton(self.groupBox)
self.pushButton.setObjectName("pushButton")
self.horizontalLayout.addWidget(self.pushButton)
self.lineEdit = QtGui.QLineEdit(self.groupBox)
self.lineEdit.setObjectName("lineEdit")
self.horizontalLayout.addWidget(self.lineEdit)
self.verticalLayout.addWidget(self.groupBox)self.retranslateUi()
QtCore.QMetaObject.connectSlotsByName(self)self.pushButton.clicked.connect(self.clickedMe)
def retranslateUi(self):
self.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
self.groupBox.setTitle(QtGui.QApplication.translate("Form", "GroupBox", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Form", "PushButton", None, QtGui.QApplication.UnicodeUTF8))def clickedMe(self):
print "cliked me"
############ GRAPHIC VIEW ###############
class TestWin2(QtGui.QWidget) :
def init(self , parent = None , modules = None) :
QtGui.QWidget.init(self,parent)self.modules = modules
self.lay = QtGui.QVBoxLayout(self)
self.setLayout(self.lay)
self.view = QtGui.QGraphicsView(self)
self.scene = QtGui.QGraphicsScene(self)
self.view.setScene(self.scene)
self.lay.addWidget(self.view)self.proxy = self.scene.addWidget(TestWidget())
self.proxy.setFlags(QtGui.QGraphicsItem.ItemIsMovable)
self.proxy.setFlag(QtGui.QGraphicsItem.ItemIsSelectable)########### RUN IT ########################
def main() :
app = QtGui.QApplication([])
temp = TestWin2()
temp.show()
app.exec_()main()
@Looks like the push button is working, i can click it but I cannot type in the line edit and cannot drag the guy around.
Even tho if I set the item in window mode then I can grab it and move it around.
That s what brought me thinking is something to do with singals going wrong. Maybe I need a custom event filter?Thanks a lot for your help man