C++ 从另一个小部件创建一个小部件作为原型
我需要从另一个窗口创建一个具有相同类型和文本的窗口小部件。我的第一次尝试是创建一个方法,用于检查多个案例的类型并返回指向它的指针。大概是这样的:C++ 从另一个小部件创建一个小部件作为原型,c++,qt,C++,Qt,我需要从另一个窗口创建一个具有相同类型和文本的窗口小部件。我的第一次尝试是创建一个方法,用于检查多个案例的类型并返回指向它的指针。大概是这样的: QWidget* createFromAnother(const QWidget* prototype) { QWidget* wOutput = 0; if(prototype->metaObject()->className() == "QTextEdit") { wOutput = new QTe
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
提前谢谢 您应该能够为此使用:
QWidget* createFromAnother(const QWidget* prototype)
{
QWidget* wOutput = qobject_cast<QWidget*>(prototype->metaObject()->newInstance());
QString temp = prototype->property("text");
wOutput->setProperty("text", temp);
return wOutput;
}
QWidget*从另一个创建(const QWidget*原型)
{
QWidget*wOutput=qobject_cast(原型->元对象()->newInstance());
QString temp=prototype->property(“文本”);
wOutput->setProperty(“文本”,临时);
返回wOutput;
}
但是请注意,只有在类构造函数声明为Q_INVOKABLE时,这才有效。据我所知,Qt的内置小部件中没有一个能够做到这一点,所以除非您创建感兴趣的子类,否则这种方法无法实现这一点。