gpt4 book ai didi

qt - 是否可以将 QWidget 作为 QObject 的子级?

转载 作者:行者123 更新时间:2023-12-04 08:53:31 25 4
gpt4 key购买 nike

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

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

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

想法?

最佳答案

您可以推广 QObject到一个隐藏的 QWidget ,见 this answer .简而言之:

#include <QtWidgets>

int main(int argc, char ** argv) {
QApplication app{argc, argv};
QWidget parent;
QLabel l1{"Close me to quit!"}, l2{"Hello!"};
for (auto label : {&l1, &l2}) {
label->setMinimumSize(200, 100);
label->setParent(&parent);
label->setWindowFlags(Qt::Window);
label->setText(QString("%1 Parent: %2.").
arg(label->text()).arg((quintptr)label->parent(), 0, 16));
label->show();
}
l2.setAttribute(Qt::WA_QuitOnClose, false);
return app.exec();
}

关于qt - 是否可以将 QWidget 作为 QObject 的子级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1585998/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com