Автор: trin 24.6.2010, 15:20
Требуется написать функцию, которая перебирала бы все компоненты на форме с дальнейшим сохранением в файл их геометрических параметров.
Для начала как докопаться до индекса элементов?
Автор: Andrewshkovskii 24.6.2010, 15:30
а может все-таки QSettings ?
Автор: Litkevich Yuriy 24.6.2010, 17:06
Цитата(Andrewshkovskii @ 24.6.2010, 19:30)
Для начала как докопаться до индекса элементов?
QObject::findChildren<QWidget *>()
Автор: trin 25.6.2010, 8:52
Цитата(Andrewshkovskii @ 24.6.2010, 16:30)
а может все-таки QSettings ?
вообще так и планировалось
Цитата(Litkevich Yuriy @ 24.6.2010, 18:06)
Цитата(Andrewshkovskii @ 24.6.2010, 19:30)
Для начала как докопаться до индекса элементов?
QObject::findChildren<QWidget *>()
thx, сейчас буду пробовать
Автор: trin 28.6.2010, 9:28
QObjectList olist;
olist=this->children();
for (int i=0;i<olist.size();i++)
{
QObject *currobj;
currobj=olist.at(i);
ui->listWidget->addItem(currobj->objectName()); //имя объекта
ui->listWidget_2->addItem(currobj->metaObject()->className()); //класс объекта
}
а как добраться до свойст объекта? Геометрических например? Если не сложно с примером кода
Автор: Litkevich Yuriy 28.6.2010, 10:58
Цитата(trin @ 28.6.2010, 13:28)
Геометрических например?
а у Qobject откуда геометрия?
Смотри QWidget, там много геометрических свойств. Смотри статью http://doc.crossplatform.ru/qt/4.5.0/geometry.html
Автор: trin 28.6.2010, 18:14
Цитата(Litkevich Yuriy @ 28.6.2010, 11:58)
а у Qobject откуда геометрия?
а если вот так?
QSettings settings("Soft", "Config");
QObjectList olist;
olist=this->children();
for (int i=0;i<olist.size();i++)
{
QObject *currobj;
currobj=olist.at(i);
settings.beginGroup("/"+currobj->parent()->objectName());
settings.beginGroup("/"+currobj->objectName());
settings.setValue("/x",currobj->property("x"));
settings.setValue("/y",currobj->property("y"));
settings.setValue("/width",currobj->property("width"));
settings.setValue("/height",currobj->property("height"));
settings.endGroup();
settings.endGroup();
}
теперь на примере этого кода нужно как-то реализовать функцию, основная проблема в том чтобы вместо
this был объект откуда её вызвали....
Автор: Алексей1153 28.6.2010, 18:36
Цитата(trin @ 28.6.2010, 21:14)
основная проблема в том чтобы вместо this был объект откуда её вызвали
От, ведь, какая сложная проблема
Делаешь функцию статической (во избежание случайного использования *this), а в качестве параметра передаёшь
QКакойТоТамТип* pThis
Автор: trin 29.6.2010, 14:26
Цитата(Алексей1153 @ 28.6.2010, 19:36)
Цитата(trin @ 28.6.2010, 21:14)
основная проблема в том чтобы вместо this был объект откуда её вызвали
От, ведь, какая сложная проблема
Делаешь функцию статической (во избежание случайного использования *this), а в качестве параметра передаёшь
QКакойТоТамТип* pThis
не такая уж и большая проблема, ок, спасиб