Russian Qt Forum

Qt => Вопросы новичков => Тема начата: deMax от Апрель 24, 2014, 09:03



Название: Преобразовать QList<obj*> в QList<parent*>
Отправлено: deMax от Апрель 24, 2014, 09:03
Собственно задача скомпилировать это:
foreach (QAbstractItemView* obj,       w->findChildren<QListView*>() + w->findChildren<QTreeView*>() + w->findChildren<QTableView*>() ) { ... }

Данный код находит дочерние объекты для QTableView, некрасиво(хочу первый способ):
foreach (QAbstractItemView* obj,       w->findChildren<QAbstractItemView*>() ) { ... }


Название: Re: Преобразовать QList<obj*> в QList<parent*>
Отправлено: Old от Апрель 24, 2014, 09:08
Ох чувствую, что задачу можно решить совсем по другому. :)
Расскажите, что вы хотите сделать в конечном итоге?


Название: Re: Преобразовать QList<obj*> в QList<parent*>
Отправлено: deMax от Апрель 24, 2014, 09:32
Я хочу чтобы две формы созданные в ui выглядели одинаково, но с учетом разного разрешения и соответственно у каждой будет свой компоновщик формы + сохранение состояния.
Уже все работает и сейчас хочу оптимизировать код.

т.е. через foreach (QTableView *obj, findChildren<QTable....>) я соединяю сигналы от нужных элементов в свой слот. (потом в слоте я разбираю кто послал и перекидываю вид текущего элемента на аналогичные элементы на других экранах).

p.s. Можно это заменить одной строчкой?
    if(qobject_cast<QAbstractButton*>(sender())) eType = E_ABSTRACTBUTTON;
    if(qobject_cast<QComboBox*>(sender()))       eType = E_COMBOBOX;
    if(qobject_cast<QDateTimeEdit*>(sender()))   eType = E_DATETIMEEDIT;
........
qDebug()<<sender()->staticMetaObject.className(); - эта штука возвращает "QObject"

p.s.s. можно ли сигнал соединять через указатель на функцию?
connect(obj, signal[1](), this, SLOT(myslot))