Russian Qt Forum
Май 09, 2024, 03:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Фон иконки в QMenu  (Прочитано 14766 раз)
spirits25
Гость
« : Март 14, 2012, 10:02 »

Искал и не нашёл.
Есть QMenu, в него добавлены QAction с иконками.
Для QMenu путём setStyleSheet сделана полупрозрачность. Но никак не могу сделать, чтобы фон иконок не становился чёрным при наведении и нажатии мышью. Мне нужно чтобы вся строка выделялась при наведении (нажатии), а сам фон иконок - нет. Иначе сильно и не красиво выделяется.
Спасибо.
Записан
spirits25
Гость
« Ответ #1 : Март 14, 2012, 14:40 »

в setStyleSheet для QMenu есть ::icon, может кто знает как изменить фон при наведении?
Код:
this.setStyleSheet("QMenu::icon {background-color: rgba(0,0,0,0);}")
этот код не помогает.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4727



Просмотр профиля WWW
« Ответ #2 : Март 14, 2012, 14:51 »

тогда уж QMenu::icon:hover
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
spirits25
Гость
« Ответ #3 : Март 14, 2012, 14:59 »

Код:
"QMenu::icon:hover {background-color: rgba(0,0,0,0);}" 
не помогло
Код:
"QMenu::icon:hover {background-color: transparent;}"
тоже.
Записан
Bepec
Гость
« Ответ #4 : Март 14, 2012, 15:01 »

минимально компилируемый проект в архив и сюда. И через 10-15 минут возможно тебе дадут решение.
Записан
spirits25
Гость
« Ответ #5 : Март 14, 2012, 15:18 »

KDE, PySide.
Первый файл qqq.py
Код:
import sys
from PySide import QtGui, QtCore
from qqqq import tray

app = QtGui.QApplication(sys.argv)

app.setQuitOnLastWindowClosed(False)

ex = tray()
ex.show()

sys.exit(app.exec_())

Рядом файл qqqq.py
Код:
from PySide import QtGui, QtCore
import sys

class tray (QtGui.QSystemTrayIcon):
    def __init__(self, parent = None):
        super(tray, self).__init__(parent)
       
        self.setIcon (QtGui.QIcon.fromTheme('help-about'))
       
        self.right_menu = RightButtonMenu(self)
       # self.left_menu = LeftButtonMenu(self, parent)

        self.activated.connect(self.activ)
        self.setContextMenu(self.right_menu)
       
    def activ(self, reason):
        if reason == QtGui.QSystemTrayIcon.Trigger \
                            or reason == QtGui.QSystemTrayIcon.DoubleClick:
            self.showMessage('wwww<b>dfff</b><i>ass</i>', 'wwww<b>dfff</b><i>ass</i>', int = 1000000)

    def close(self):
        sys.exit(1)
       
class RightButtonMenu(QtGui.QMenu):
    def __init__(self, parent):
        QtGui.QMenu.__init__(self)
       
        # Add about program
        About_icon = QtGui.QIcon.fromTheme('help-about')
        self.about_action  = QtGui.QAction(About_icon, ("About Program"), self)
        self.addAction(self.about_action)

        # Add tools
        tools_icon = QtGui.QIcon.fromTheme('preferences-other')
        self.tools_action  = QtGui.QAction(tools_icon, ('Program settings'), \
                                        self)
        self.addAction(self.tools_action)

        exit_icon = QtGui.QIcon.fromTheme('application-exit')
        self.exit_action  = QtGui.QAction(exit_icon, ("Exit program"), \
                                        self, triggered=parent.close)
        self.addAction(self.exit_action)
       
        bg_color_alpha = 'rgba(0,0,0,150)'
        self.setStyleSheet( self.styleSheet() + \
                    'QMenu {'\
                    'color: white;'\
                    'background-color: %s;' %bg_color_alpha +\
                                       '}'\
                    'QMenu::icon:hover {background: transparent;}' \
                    #rgba(0,0,0,0);}' \
                     )
Записан
spirits25
Гость
« Ответ #6 : Март 15, 2012, 09:51 »

работающие исходники выложил. Есть идеи?
Записан
Bepec
Гость
« Ответ #7 : Март 15, 2012, 10:04 »

*моя осторожно впихнула pySide в Visual studio. Зажмурившись, VS буква за буквой читала файл и с отвращением выдавала error'ы. Прочитав всё, VS в гневе стёрла исходники с еретическим кодом*
Улыбающийся
Записан
spirits25
Гость
« Ответ #8 : Март 15, 2012, 10:30 »

*моя осторожно впихнула pySide в Visual studio. Зажмурившись, VS буква за буквой читала файл и с отвращением выдавала error'ы. Прочитав всё, VS в гневе стёрла исходники с еретическим кодом*
Улыбающийся
а вот код и не еретический совсем=)
с VS конечно перебор, ну а если посмотреть на это как только на Qt, может предположения появятся?=)
Записан
Bepec
Гость
« Ответ #9 : Март 15, 2012, 10:32 »

После обеда посмотрю. А то счас чёт энергия на нуле Улыбающийся
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #10 : Март 16, 2012, 08:14 »

Тоже пробовал играться с ::icon для меню, и возникает такое ощущение что оно просто не работает Улыбающийся ::item отрабатывает хорошо, а вот например заменить цвел левой панельки (где иконки расположены) не выходит.
Записан
spirits25
Гость
« Ответ #11 : Март 28, 2012, 09:08 »

да, похоже этого никто не знает, за такое время уже нашёлся бы ответ.
Записан
Bepec
Гость
« Ответ #12 : Март 28, 2012, 09:13 »

Я болел Подмигивающий А так интересный вопросик конечно.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #13 : Март 28, 2012, 15:21 »

Думается что через css никак если только через style или переопределить paintEvent у меню может что и выйдет.
Записан
Bepec
Гость
« Ответ #14 : Март 28, 2012, 15:49 »

У меня ток один вопрос - как вы сделали полупрозрачным меню? Веселый
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.