【发布时间】:2011-11-03 12:29:46
【问题描述】:
我正在尝试编写一些自定义小部件作为 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 的问题?
感谢您的任何建议!
【问题讨论】:
-
您将值设置为 bool 并读取为 double - 这可能行不通。
-
糟糕,抱歉,这是个错误……谢谢。我正在阅读和写作正确的类型,这是重写“拼写错误”,我要纠正它......
-
现在已修复...再次感谢
标签: qt qt-designer