[英]Create a widget from another as prototype
我需要创建一个具有相同类型和另一个文本的窗口小部件。 我的第一个尝试是创建一个检查多个案例的类型并返回指向它的指针的方法。 像这样:
QWidget* createFromAnother(const QWidget* prototype)
{
QWidget* wOutput = 0;
if(prototype->metaObject()->className() == "QTextEdit")
{
wOutput = new QTextEdit();
}else if(prototype->metaObject()->className() == "QLineEdit")
{
wOutput = QLineEdit();
}else if(...){ }
// -- > The rest of bad-designed code
QString temp = prototype->property("text");
wOutput->setProperty("text", temp);
return wOutput;
}
是的,这不是一个好主意。 因此,在开始之前。 还有其他解决方法吗?
我的Qt版本是4.6.2。
提前致谢。
您应该能够为此使用QMetaObject::newInstance()
:
QWidget* createFromAnother(const QWidget* prototype)
{
QWidget* wOutput = qobject_cast<QWidget*>(prototype->metaObject()->newInstance());
QString temp = prototype->property("text");
wOutput->setProperty("text", temp);
return wOutput;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.