Цитата(fantom @ 10.4.2009, 17:21) Link
Как технически клонировать виджет который содержит внутри себя другие объекты.
Цитата(fantom @ 10.4.2009, 16:45) Link
Работа с ним будет происходить примерно следующим образом: в дизайнере мы переносим мышкой необходимый виджет на виджет-контейнер
Отклонусь немного от темы (а мож и не отклонюсь

).
По двум недавным обсуждения по поводу динамического создания форм (Link Link) родилась следущая мысль. Не знаю на сколько хорошая, но право на жизнь имеющая. (Меня покрайней мере было интересно это реализовать).
Итак, вопросс
Цитата(fantom @ 10.4.2009, 17:21) Link
Как технически клонировать виджет который содержит внутри себя другие объекты.
Сразу хочу оговориться, с XML опыта работы очень мало, так что если есть способ сократить код или сделать более изящно, сделайте это. Мне прошу не пинать

И еще, метод
domxmlToString был позаимствован у xintrea здесь (Link)
Итак, изначально форма, виджет-контейнер и все что в нем, создается в дисигнере. Т.е. мы имее ui файл.
QDomDocument doc("mydocument");
QFile file("../form/oscilloscope.ui");
if (!file.open(QIODevice::ReadOnly))
return 0;
if (!doc.setContent(&file)) {
file.close();
return 0;
}
file.close();
QDomNodeList nodelist = doc.elementsByTagName( "widget" );
QDomElement elem;
qDebug() << nodelist.count();
for (int i =0; i != nodelist.count(); i++) {
elem = nodelist.item(i).toElement();
if(elem.attribute("name") == "voltdivgroupBox")
break;
}
QByteArray xmlstr = domxmlToString(elem).toUtf8();
xmlstr.prepend("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
"<ui version=\"4.0\">");
xmlstr.append("</ui>");
QUiLoader loader;
QBuffer buffer(&xmlstr);
buffer.open(QIODevice::ReadOnly|QIODevice::Text);
QWidget *myWidget = loader.load(&buffer);
buffer.close();
myWidget->show();
приложение. Описание метода domxmlToString
QString domxmlToString(QDomNode xmldata)
{
if(xmldata.isDocument()) {
return xmldata.toDocument().toString();
}
else {
QString xmlcode;
QTextStream stream(&xmlcode, QIODevice::WriteOnly);
xmldata.save(stream, 1);
return xmlcode;
}
}
Вот что получилось у меня(см. прикрепленные рисунки). Как видете я создал два клона части своего приложения, Все свойства при этом сохранены, в том числе и ресурсы.
Ух. Я в тему надеюсь

?
Даже если не совсем, хвалим меня, я старался
Эскизы прикрепленных изображений
 РЈРСВВВВВВВВВВеньшено Р В Р’В Р СћРІР‚ВВВВВВВВВР С• 77%
1152 x 864 (235.66 килобайт)
|