Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ масштабирование формы и элементов на ней

Автор: 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()); //класс объекта
}



а как добраться до свойст объекта? Геометрических например? Если не сложно с примером кода :blush:

Автор: 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



не такая уж и большая проблема, ок, спасиб :)

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)