Название: Как правильно сравнить виджеты Отправлено: GraninDm от Май 15, 2012, 15:38 Добрый день!
Пишу не очень давно, так что возможно ответ достаточно прост, но поиск не помог. Собственно нужно сравнить два виджета на идентичность (один и тот же или два разных?). Как это сделать правильно и кроссплатфирменно (lin/win)? Сравнивать просто как указатели? Или есть другой подход именно применительно к Qt? Название: Re: Как правильно сравнить виджеты Отправлено: Пантер от Май 15, 2012, 15:38 Подробнее опиши задачу.
Название: Re: Как правильно сравнить виджеты Отправлено: GraninDm от Май 15, 2012, 15:43 Если упрощенно, то так...
Есть объект (q), в котором храниться ссылка на виджет (в частности на QMdiSubWindow) Есть метод q.test(QMdiSubWindow) Этот метод должен сравнить сохраненную ссылку с переданной в качестве параметра. Вот, не знаю как правильно сравнить? Название: Re: Как правильно сравнить виджеты Отправлено: V1KT0P от Май 15, 2012, 15:50 Если упрощенно, то так... 90% ответа уже находится в вопросе. Если проще, то приведи критерии сравнения и все станет ясно.Есть объект (q), в котором храниться ссылка на виджет (в частности на QMdiSubWindow) Есть метод q.test(QMdiSubWindow) Этот метод должен сравнить сохраненную ссылку с переданной в качестве параметра. Вот, не знаю как правильно сравнить? Название: Re: Как правильно сравнить виджеты Отправлено: GraninDm от Май 15, 2012, 15:55 Критерий один
Узнать в принципе обе ссылки указывают на один и тот же объект или нет. Т.е. я правильно понял? q.savedObject == parWidget А если более общий случай и будут передаваться объекты разных типов, то к какому типу приводить для сравнения? Название: Re: Как правильно сравнить виджеты Отправлено: V1KT0P от Май 15, 2012, 15:58 Критерий один К QObject-у приводи.Узнать в принципе обе ссылки указывают на один и тот же объект или нет. Т.е. я правильно понял? q.savedObject == parWidget А если более общий случай и будут передаваться объекты разных типов, то к какому типу приводить для сравнения? Название: Re: Как правильно сравнить виджеты Отправлено: sudo от Май 15, 2012, 22:04 Не надо приводить, указатели всё равно одинаковые будут. Это если я топик правильно понял, что вечером далеко не факт ;D
Название: Re: Как правильно сравнить виджеты Отправлено: andrew.k от Май 16, 2012, 17:06 Критерий один Узнать в принципе обе ссылки указывают на один и тот же объект или нет. Т.е. я правильно понял? q.savedObject == parWidget А если более общий случай и будут передаваться объекты разных типов, то к какому типу приводить для сравнения? Чтобы просто сравнивать указатели типы вообще не нужны. Название: Re: Как правильно сравнить виджеты Отправлено: Igors от Май 16, 2012, 17:27 Чтобы просто сравнивать указатели типы вообще не нужны. Код
Название: Re: Как правильно сравнить виджеты Отправлено: Igors от Май 16, 2012, 17:28 Не надо приводить, указатели всё равно одинаковые будут. Строго говоря нет :)Название: Re: Как правильно сравнить виджеты Отправлено: V1KT0P от Май 16, 2012, 17:34 Не надо приводить, указатели всё равно одинаковые будут. Строго говоря нет :)Название: Re: Как правильно сравнить виджеты Отправлено: Igors от Май 16, 2012, 17:55 Где можно про это почитать. Меня что-то заинтересовало как располагается информация наследованных классов, особенно множественное наследование. Это вроде где-то в стандарте должно быть написано... Совершенно верно, при множественном наследовании возможно такоеКод В данном случае не вижу зачем штудировать стандарт - в отладчике все прекрасно видно Название: Re: Как правильно сравнить виджеты Отправлено: GreatSnake от Май 16, 2012, 18:14 Код
Не надо приводить, указатели всё равно одинаковые будут. Строго говоря нет :)Название: Re: Как правильно сравнить виджеты Отправлено: V1KT0P от Май 16, 2012, 18:22 Если база у них общая, то строго говоря да :) Во во, а если множественное наследование, то баз уже как минимум =).В данном случае не вижу зачем штудировать стандарт - в отладчике все прекрасно видно Просто интересно узнать в каком видео оно там находится.Название: Re: Как правильно сравнить виджеты Отправлено: Igors от Май 16, 2012, 18:35 Не мешало бы озвучить что такое c и b :) Да запростоКод
Если база у них общая, то строго говоря да :) Ну батенька, что ж у Вас за "строго" такое :)Просто интересно узнать в каком видео оно там находится. Исходите из соображения что приведение "вмонтированного" (b в примере выше) должно вернуть тот же самый экземпляр как если бы он был просто создан "сам" (ну почти, VMT разные) |