crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Опрос формы о child-ах с контейнерами
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
JohnZ Дата 25.9.2014, 12:54
 
Цитата(lanz @ 24.9.2014, 18:51) *
QFrame, QScrollArea из очевидного. Но вообще вопрос, что считать контейнером :D

В новой версии функции учёл ещё QFrame, а QScrollArea нет, т.к. не смог придумать
его приминения в своём проекте :rolleyes:
Контейнером видимо мне придётся считать всё, что юзер сделает контейнером :D
lanz, будет время, загляните plz в ветку "Виджет из QT3 в QT4".
lanz Дата 24.9.2014, 18:51
  QFrame, QScrollArea из очевидного. Но вообще вопрос, что считать контейнером :D
JohnZ Дата 24.9.2014, 11:28
  Нашлось решение, пока объяснял что мне нужно ... :D
В своём класе реализовать bool isContainer( QObject *obj ) ,
в котором "вшиты" имена контейнеров из Дизайнера.
Не совсем изящное решение, но пока устроит ...

bool fpForm::isWContainer(QObject *wo)
{
   if (!wo->isWidgetType())
            return false;

   QString cn = wo->metaObject()->className();

   if (cn == "QToolBox" || cn == "QTabWidget" || cn == "QStackedWidget")
            return true;

    return false;
}


Кто в курсе, подскажите, что НЕ учтено ???
OKTA Дата 24.9.2014, 11:08
  Только рекурсивно опрашивать
JohnZ Дата 24.9.2014, 11:04
  Дык мне нужно, как указано в 1-й месаге ветки, определить Контейнеры,
для их дальнейшего пока не-рекурсивного опроса на предмет содержащихся в них
Widget-ов и их динамич-х св-в. Делается всё в цикле, и поэтому он уж слишком
громоздким получается ...
OKTA Дата 24.9.2014, 10:58
  Ну так, layout не является виджетом и таким образом ты их отсеешь.
JohnZ Дата 24.9.2014, 10:52
  К сожалению не подходит, т.к. он отвечает о Widget-е а не контейнере ...
OKTA Дата 24.9.2014, 9:58
  А что насчет этого? bool QObject::isWidgetType () const
JohnZ Дата 24.9.2014, 0:11
 
Цитата(lanz @ 23.9.2014, 19:12) *
Теоретически любой объект может быть контейнером, поэтому вам просто нужно рекурсивно опрашивать всех детей.

КанЭшна может, но вотЪ признака, типа bool isContainer() к сожалению почему-то не имеет.
Ведь кучу текста можно было-бы сэкономить :-( Видимо придётся допиливать либу :-)
Я предполагал, что кто-либо уже сталкивался с контейнерами, и опрашивал их по-иному, а не по имени ...

Цитата(lanz @ 23.9.2014, 19:12) *
Так или иначе вам придется спрашивать имя, чтобы отделить например Layout'ы.

Дык пока так и делаю, но хотелось сделать более универсальное решение ...

Цитата(lanz @ 23.9.2014, 19:12) *
Но ничего плохого в этом не вижу .) Вы же получаете dynamicPropertyNames.

Да, т.к. исходя именно из dynamicProperty, и строится дальнейший алгоритм ...
lanz Дата 23.9.2014, 19:12
  Теоретически любой объект может быть контейнером, поэтому вам просто нужно рекурсивно опрашивать всех детей.
Так или иначе вам придется спрашивать имя, чтобы отделить например Layout'ы.
Но ничего плохого в этом не вижу .) Вы же получаете dynamicPropertyNames.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 20:38