![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
FenixTES |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 14.11.2009 Пользователь №: 1230 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
предположим, у меня есть число, мне нужно создать несколько кнопок(кол-во кнопок == числу), и потом повесить на них сигналы.
долго с этим долбался, что только не пробывал, создавал и массивы кнопок, и пробывал через QMap... ниче только не получилось... |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Вот в этом коде:
во-вторых, QFrame *lab =new QFrame; лишний, т.к. QLabel уже наследник QFrame и, соответственно, обладает всеми его свойствами.в-третьих, lab->setLayout (lay); устанавливает компоновщик для рамки, однако у рамки нет родителя, поэтому она - виджет верхнего уровня (окно), ну а до вызова show() она просто не показывается. Ну и, во-первых, если ты установишь (как и полагается) компоновщик для самого ButtonOnLabel, а не для рамки то, что метка должна будет сделать со своим текстом? Где относительно текста должны будут появится виджеты? Вообще ни к чему было наследоватся от метки. Надо было идти простым путём - наследоваться от QWidget или QFrame (только если рамка нужна). Обычное правило при выборе базового класса - выбрать наименьшую необходимую функциональность. Сложные виджеты в качестве базового класса выбирают, когда хотят изменить их функциональность, например, нужен фоновый рисунок у метки. А у тебя полностью новый, сложный (состоящий из нескольких) виджет. ButtonOnLabel::setText ("'это я вижу"); это возможно будет работать, но написано не корректно. Так вызывают метод базового класса внутри наследника, а базовый класс - QLabel. Поэтому запись должна выглядеть так:
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 13.6.2025, 14:56 |