Название: Как динамически создать кнопки и события для них? Отправлено: PavelVX от Сентябрь 14, 2012, 13:00 Возникла задача: в зависимости от ситуации показывать разное количество кнопок с разными действиями на них. Как такое реализовать?
Есть мысль: создать потомка от QPushButton с доп полем, описывающим действие. соединить все подобные кнопки с одним слотом и делать нужное действие. Но SIGNAL(clicked()) не передает, что за кнопка нажата :(. Посоветуйте, как быть. Название: Re: Как динамически создать кнопки и события для них? Отправлено: Bepec от Сентябрь 14, 2012, 13:01 sender() работает в каждом слоте. :)
Название: Re: Как динамически создать кнопки и события для них? Отправлено: lighting от Сентябрь 14, 2012, 16:23 или используй SignalMapper
Название: Re: Как динамически создать кнопки и события для них? Отправлено: paul_winex от Сентябрь 16, 2012, 21:33 Я недавно делал так (на питоне):
- определяю новый класс кнопки - внутри прописываю процедуру выбора нужной процедуры в зависимости от типа - в самой же кнопке приписываю сигнал на саму себя выглядит примерно так Код
В процедурах уже может быть ссылка на парента и его процедуры нужные. Название: Re: Как динамически создать кнопки и события для них? Отправлено: PavelVX от Сентябрь 17, 2012, 10:12 Спасибо!
Я использовал sender(), все работает как надо. На данный момент, единственное, что вызывает вопрос: как быстрее всего грохнуть ненужные кнопки из памяти. Код: mainVBoxLayout = new QVBoxLayout(); Т.е. при пересоздании mainVBoxLayout старые кнопки так и останутся висеть в памяти, пока я этот вспомогательный виджет не грохну, поскольку у QPushButton не может быть парента - лейаута. На данный момент думаю решить эту проблему через QList<QPushButton> btnList; После уничтожения лейаута, уничтожаем кнопки из QList, а потом добавляем заново. Нет ли более элегантного способа? |