Удаление элемента в QGridLayout |
Здравствуйте, гость ( Вход | Регистрация )
Удаление элемента в QGridLayout |
ruzik |
26.6.2011, 23:16
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Здравствуйте, у меня есть QGridLayout, я хочу что бы при определенных обстоятельствах вся строка этого слоя стиралась и туда вставлялась одна кнопка, все вроде работает, кроме стирания, хотя по смыслу должно, документация по этому поводу вроде молчит
Заранее спасибо за помощь! |
|
|
Litkevich Yuriy |
27.6.2011, 6:02
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
ruzik |
27.6.2011, 9:52
Сообщение
#3
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
QGridLayout - это слой-таблица и хочу что бы в одной строке, а именно первой все элементы стерлись(заменить на QWidget), а потом в один из этих элементов заменить на кнопку
|
|
|
Litkevich Yuriy |
27.6.2011, 18:02
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
ruzik |
27.6.2011, 20:06
Сообщение
#5
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Наверно, просто привык так.
Так все-таки как это сделать? |
|
|
Litkevich Yuriy |
28.6.2011, 6:07
Сообщение
#6
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Если ты правильно переводишь - ты меньше путаешься.
Layout - компоновщик. В библиотеке Qt у всех контейнеров (а компоновщик и есть контейнер) есть метод содержащий слово take, он вынимает элемент из контейнера и возвращает указатель на него. Теперь контейнер перестаёт как-либо управлять этим элементом, программист должен следить за его жизнью сам. Т.е. можно поступить так, как описано тут так же пригодятся: QWidget * QLayoutItem::widget () [virtual] void QLayout::removeWidget ( QWidget * widget ) |
|
|
ruzik |
28.6.2011, 11:14
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
Попробовал, работает не так
У меня gidLayout в котором 2 строки и 10 столбцов и мне надо очищать всю вторую строку, но получается, как на картинках Может будет понятнее если я приведу весь нужный код, он добавляет в gridLayout виджеты с цветами = оттенками текущего, кончено код достаточно громосткий и надеюсь что получиться разобраться в проблеме не разбираясь в самом коде
RColorItemWidget это наследник обычного виджета(QWidget) Сообщение отредактировал ruzik - 28.6.2011, 11:16 |
|
|
silver47 |
29.6.2011, 6:53
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Поигрался с удалением виджетов. Виджеты то удаляются все хорошо, но от них остается "след". QHBoxLayout размещает на себе 4 QLabel'а c текстом. и по нажатии кнопки, предыдущие удаляются, новые создаются. Если размещать на лэйауте нечто иное, а не QLabel, например кнопки, то все работает как часы.
2ruzik: А нельзя обойтись без удаления виджета? почему бы не заменить у него такое свойство как ЦВЕТ? Сообщение отредактировал silver47 - 29.6.2011, 7:01 |
|
|
ruzik |
29.6.2011, 11:49
Сообщение
#9
|
Активный участник Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: 0 |
QGridLayout разбит как бы на 2 части:
верхняя, с цветами, там я и заменяю цвет и она работает нормально, без нижней части а нижняя часть - это часть стрелки, стрелка указывает на исходный цвет среди оттенков из которых были получены оттенки, соответственно при изменении текущего цвета, стрелка вполне возможно будет указывать на другой цвет, соответственно нужно удалить все элементы нижней части и вставить стрелку |
|
|
silver47 |
29.6.2011, 12:29
Сообщение
#10
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Мда. Тоже самое. При удалении элемента, он удаляется, но остается, по прежнему, виден.
Сообщение отредактировал silver47 - 29.6.2011, 12:55 |
|
|
Текстовая версия | Сейчас: 28.3.2024, 21:05 |