проблема с QSignalMapper |
Здравствуйте, гость ( Вход | Регистрация )
проблема с QSignalMapper |
votan |
10.10.2009, 11:06
Сообщение
#1
|
Студент Группа: Участник Сообщений: 25 Регистрация: 6.7.2009 Пользователь №: 879 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здравствуйте, собственно проблема заключается в том что объекты не могут поставить на себя QPalette
кусок инициализации маппера
в слоте slotChangeColor пытался, приводить возвращаемый указатель, и просто устанавливать this->setPalette(), работать отказывается, хотя если отображать объект сразу, то все работает как надо, у меня же 14 объектов располагаются в другом объекте, и он заходит и выводит сообщения по qDebug(), но палитру менять отказывается
|
|
|
kwisp |
10.10.2009, 11:24
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
может дело в static_cast?
тролли советуют qobject_cast |
|
|
BRE |
10.10.2009, 11:29
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
kwisp |
10.10.2009, 11:36
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
на QAction не обратил внимания.
каюсь, однако чего тогда добиваются строчкой (static_cast <QWidget*>(obj))->setPalette(palette); привести QAction* к QWidget* ? |
|
|
votan |
10.10.2009, 11:37
Сообщение
#5
|
Студент Группа: Участник Сообщений: 25 Регистрация: 6.7.2009 Пользователь №: 879 Спасибо сказали: 0 раз(а) Репутация: 0 |
мне каким-то образом нужно получить доступ к конкретному объекту( в моем случае, есть виджет, в нем 14 малых виджетов, в каждом малом виджете меню с маппером, при тыке на пункте меню переходим в слот в который отправляется надпись кнопки меню, и исходя из надписи пытаемся поставить нужный фон на кликнутый малый виджет)
|
|
|
BRE |
10.10.2009, 11:43
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
мне каким-то образом нужно получить доступ к конкретному объекту Так ты и так получаешь доступ к нужному объекту (для которого выполняется меню). Что рекомендовал бы сделать:
|
|
|
votan |
10.10.2009, 11:49
Сообщение
#7
|
Студент Группа: Участник Сообщений: 25 Регистрация: 6.7.2009 Пользователь №: 879 Спасибо сказали: 0 раз(а) Репутация: 0 |
на QAction не обратил внимания. каюсь, однако чего тогда добиваются строчкой (static_cast <QWidget*>(obj))->setPalette(palette); привести QAction* к QWidget* ? ничего, просто от безысходности сама идея использования маппера была в том чтобы передавать надписи с кнопок меню, а уже исходя из надписи ставить нужный фон, но кажется я не допонял чего-то в маппере мне каким-то образом нужно получить доступ к конкретному объекту Так ты и так получаешь доступ к нужному объекту (для которого выполняется меню). Что рекомендовал бы сделать:
поменял, но эффекта по прежнему нету
|
|
|
kwisp |
10.10.2009, 11:52
Сообщение
#8
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
там не все так просто, если не ошибаюсь, палитра виджета зависит от палитры хозяина и важен флаг QWidget::autoFillBackground.
с темами XP не работает Сообщение отредактировал kwisp - 10.10.2009, 11:58 |
|
|
BRE |
10.10.2009, 12:09
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
votan, попробуй менять цвет виджета не через палитру, а используя stylesheet.
|
|
|
Litkevich Yuriy |
10.10.2009, 12:14
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
в моем случае, есть виджет, в нем 14 малых виджетов, в каждом малом виджете меню с маппером, при тыке на пункте меню переходим в слот в который отправляется надпись кнопки меню, и исходя из надписи пытаемся поставить нужный фон на кликнутый малый виджет получается, что у каждого малого виджета своё меню и оно нужно для смены цвета именно этого виджета.Может тогда пойти класическим путём (в Qt). Сделать такой виджет с меню, соеденить "Клики по Действиям" с одним слотом, в слоте через sender() получать отправитель, зная что это "Действие" получить текст его, далее с помощью переключателя (switch) определить какой цвет установить. Если эти малые виджеты должны как-то отличатся друг от друга, то использовать выше описанный виджет для наследования. ? |
|
|
Текстовая версия | Сейчас: 4.12.2024, 18:55 |