Замена объекта |
Здравствуйте, гость ( Вход | Регистрация )
Замена объекта |
aperon |
13.6.2009, 15:10
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 5.6.2009 Из: Kyiv Пользователь №: 803 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте, форумчане. К примеру, в тулбаре имеем несколько объектов, среди которых QSlider. В процессе реботы программы есть необходимость заменить слайдер на другой объект, скжем Phonon::SeekSlider. Подскажите или ткните носом на ответ, как мне такое сделать, чтобы не потерялась очередность объектов в тулбаре или возможно ли такое вообще.
|
|
|
Litkevich Yuriy |
13.6.2009, 15:58
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
чтобы не потерялась очередность объектов в тулбаре или возможно ли такое вообще. QAction * insertWidget ( QAction * before, QWidget * widget ) Оно?
|
|
|
aperon |
13.6.2009, 16:17
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 5.6.2009 Из: Kyiv Пользователь №: 803 Спасибо сказали: 0 раз(а) Репутация: 0 |
чтобы не потерялась очередность объектов в тулбаре или возможно ли такое вообще. QAction * insertWidget ( QAction * before, QWidget * widget ) Оно?Т.е, я вставляю то, что мне надо, а потом старое удаляю. Тогда получается, что в определенный момент, у меня в тулбаре будут присутствовать два слайдера, старый ненужный и новый? Так? А просто заменить никак нельзя, правильно? |
|
|
Litkevich Yuriy |
13.6.2009, 17:16
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
А просто заменить никак нельзя, правильно? можно попробовать так:Создаёшь указатель на QWidget
В нужный момент инициализируешь его желаемым объектом.
А при смене удаляешь старый объект и переиницализирушь указатель новым
Но тогда пользоваться таким виджетом нужно с приведением типа, например:
или
В зависимости от того, какой виджет в данный момент используется |
|
|
aperon |
13.6.2009, 17:32
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 5.6.2009 Из: Kyiv Пользователь №: 803 Спасибо сказали: 0 раз(а) Репутация: 0 |
Вы точно обобщили суть задачи и ее решение. Большое спасибо. Насчет приведения, это понятно по-умолчанию. Жаль только, что нет возможности сделать такую операцию визуально незаметной.
|
|
|
Litkevich Yuriy |
13.6.2009, 17:52
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
aperon |
13.6.2009, 19:49
Сообщение
#7
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 5.6.2009 Из: Kyiv Пользователь №: 803 Спасибо сказали: 0 раз(а) Репутация: 0 |
OK. Спасибо.
|
|
|
kwisp |
15.6.2009, 7:57
Сообщение
#8
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
Жаль только, что нет возможности сделать такую операцию визуально незаметной. у меня точно такая же задача стояла. в resizeEvent() ToolBar`a сделал пропорциональное изменения его содержимого, и при замене действия либо виджета в нем слежу чтобы старый и новый виджет были одинакового размера -- визуально при замене ToolBar теперь не "скачет". |
|
|
aperon |
15.6.2009, 15:16
Сообщение
#9
|
Новичок Группа: Новичок Сообщений: 5 Регистрация: 5.6.2009 Из: Kyiv Пользователь №: 803 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо.
|
|
|
Текстовая версия | Сейчас: 19.4.2024, 5:50 |