gpt4 book ai didi

Qt Designer 自定义插件和动态属性

转载 作者:行者123 更新时间:2023-12-02 02:21:31 26 4
gpt4 key购买 nike

我正在尝试编写一些自定义小部件作为 Qt Designer 插件。我所有的小部件的一些属性都是相同的,所以我想创建一个基类。但是存在多个继承的问题,当基类从 QObject 继承时(因为 Q_PROPERTY 宏使其属性可在 Qt Designer 中编辑)并且自定义小部件需要是 QWidget 的子级。但是我发现了 Qt 的动态属性,因此基类获取小部件指针并设置动态属性。

class BaseClass {
QWidget *widget;
BaseClass(QWidget *widget) {
this->widget = widget;
this->widget->setProperty("Some", 0.0);
}
void setSome(double some) {
this->widget->setProperty("Some", some);
}
...

没关系。我可以设置动态属性并在 Qt Designer 中查看和编辑它们,一切正常。但是当我想从属性中读取时,出现了问题。当我使用:
this->widget->property("Some").value<double>();

Qt Designer 无法启动 (?!)。

当我多次使用它时
QVariant var = this->widget->property("Some");
return var.toDouble();

这是同样的问题! Qt Designer 无法启动,没有消息或其他提示。我正在使用 Qt 4.7.4 及其设计器。同样的问题出现在 Qt Creators 设计器中(在 2.0.0、2.0.1 上测试)。

我错了还是Qt的问题?

感谢您的任何建议!

最佳答案

创建另一个 QWidget 时传递给构造函数的 QWidget 实际上是父级,因此如果您使用某些东西作为

Derived::Derived(QWidget* parent):Base(parent){

}

您将该属性设置为父级而不是子级。

由于 Qt 旨在在引用 QObjects 时使用简单的继承,创建一个基类,其中包含设置 Q_PROPERTY 的函数并添加一些宏来定义所需的属性。

希望能帮助到你。

关于Qt Designer 自定义插件和动态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7994868/

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