New style signal slots were introduced in Qt 4.5. Maybe you are using a really old version of Qt?
On May 10, 2012, at 7:20 PM, Manuel Macha <[email protected]> wrote: > Hi Justin, > many thanks for your help. > I've cleaned up the mousePressEvent method as suggested (the original was > eclipse's suggested default syntax for overriding a method) > I'd prefer using the new-style signal-slots mechanism but in this case I > couldn't get it to work, even trying several variations of the example that > you've given. > As for breaking the UI-setup into a bunch of smaller methods. I think I saw > that in some book and found it helped me with breaking stuff into meaningful > subtasks. I'm aware that it inflates the code and it's uncommon to do things > that way but for me it's working. > Anyways, here's how far I got with the frameLayout. I've added the > collapse-arrow and a label: > http://pastebin.com/qYgDDYsB > > Regards, > Manuel > > > On Fri, May 11, 2012 at 1:47 AM, Justin Israel <[email protected]> wrote: > I don't think there is anything wrong with the approach you are taking. This > is the norm. The framework can't provide every type of functionality, but > they do give you a ton of building blocks to make it easy to compose your own. > > There isn't much to say about your code other than me nit picking a little :-) > But here are some small things... > > def mousePressEvent(self, *args, **kwargs): > self.emit(QtCore.SIGNAL('clicked()')) > return QtGui.QFrame.mousePressEvent(self, *args, **kwargs) > > An event method will only receive a single event argument, and you don't need > to return anything. Right now this would be returning None all the time. You > can just take the single event arg, and then call the superclass method with > it. > > Also, you might want to consider using the new-style signal-slots if you are > just learning... > You can define signals as class attributes like this: > > class TitleFrame(QtGui.QFrame): > clicked = QtCore.pyqtSignal() > > ... And then you can emit like this: > > self.clicked.emit() > > ... And connections to the slot in your other class would be like: > > self.titleFrame.clicked.connect(self.printSomething) > > Its much cleaner and easier to use. And you can create signals with different > signatures and slots of the same name that take different signatures. > > Thats pretty much it. Like I said, the rest is just nit-picking (I find it > more obscure to define your UI setup in a bunch of smaller methods that you > call in a row, when they depend on each other, such as needing to connect the > signal and knowing that the UI object is there). > > > On May 10, 2012, at 4:50 AM, Manuel Macha wrote: > >> One thing I really miss with PyQt is having a Maya-style collapsible >> frameLayout readily available, so I hacked this together: >> http://pastebin.com/5y8tsBE7 >> It's pretty simple at the moment. There's neither a label nor an icon >> indicating the collapsed state. >> Before I spend too much time on it, could you guys pls have a look and tell >> me if this is a valid approach? (I just started familiarizing myself with qt >> a few weeks ago) >> In case this is way of doing things is not a good idea I'd appreciate if >> someone could push me into the right direction (or ideally share their >> working frameLayout code with the rest of us), otherwise any help in making >> this better is greatly appreciated. >> Regards, >> m >> p.s. are there any websites that have custom pyqt widgets for download? I >> didn't really find anything through google. >> >> -- >> view archives: http://groups.google.com/group/python_inside_maya >> change your subscription settings: >> http://groups.google.com/group/python_inside_maya/subscribe > > -- > view archives: http://groups.google.com/group/python_inside_maya > change your subscription settings: > http://groups.google.com/group/python_inside_maya/subscribe > > -- > view archives: http://groups.google.com/group/python_inside_maya > change your subscription settings: > http://groups.google.com/group/python_inside_maya/subscribe -- view archives: http://groups.google.com/group/python_inside_maya change your subscription settings: http://groups.google.com/group/python_inside_maya/subscribe
