Search code examples
qtsignals-slotsqwidget

Is it possible to have a QWidget as a child to a QObject?


My main application object is a QObject, that juggles a QSystemTrayIcon, a QDialog, a QWindow and a few other components. The app mostly sits in the tray, with some options dialogs etc etc.

Now, I'd like to use QMetaObject::connectSlotsByName() to connect signals from these objects to slots in the main object. It's 10-15 of them, so writing them by hand doesn't seem efficient, right, professional, modern, etc etc.

However, I can't use my QObject as parent to the QWidget based objects, nor can I change the object to inherit QWidget, as they will not show up, since the main object isn't visible.

Ideas?


Solution

  • Connecting signals to slots manually is perfectly fine. Qt itself is doing that, most Qt applications are doing that.

    I'm afraid you can't use connectSlotsByName for the parent-child issues with QWidget, but if you really want it, you have all the metadata available in QMetaObject, so you can write a function that works like connectSlotsByName on any pair/set of QObjects.