[英]Qt Designer custom plugin and dynamic properties
我正在尝试将一组自定义小部件编写为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旨在在引用QObject时使用简单的inheritane,因此创建一个基类,其中包含将设置Q_PROPERTY的函数并添加一些宏来定义所需的属性。
希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.