是否可以将 QWidget 作为 QObject 的子级? [英] Is it possible to have a QWidget as a child to a QObject?

查看:45
本文介绍了是否可以将 QWidget 作为 QObject 的子级?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的主要应用对象是一个 QObject,它处理了一个 QSystemTrayIcon、一个 QDialog、一个 QWindow 和其他一些组件.该应用程序主要位于托盘中,带有一些选项对话框等.

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.

现在,我想使用 QMetaObject::connectSlotsByName() 将来自这些对象的信号连接到主对象中的插槽.有 10-15 个,所以手写它们似乎没有效率、正确、专业、现代等.

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.

但是,我不能使用我的 QObject 作为基于 QWidget 的对象的父对象,也不能更改对象以继承 QWidget,因为它们不会出现,因为主要对象不可见.

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.

想法?

推荐答案

手动将信号连接到插槽非常好.Qt 本身就是这样做的,大多数 Qt 应用程序都这样做.

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

恐怕您不能将 connectSlotsByName 用于 QWidget 的父子问题,但是如果您真的想要它,您可以在QMetaObject,因此您可以在任何一对/一组 QObject 上编写一个类似于 connectSlotsByName 的函数.

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.

这篇关于是否可以将 QWidget 作为 QObject 的子级?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆