Russian Qt Forum

Qt => QSS => Тема начата: spirits25 от Март 14, 2012, 10:02



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


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Март 14, 2012, 14:40
в setStyleSheet для QMenu есть ::icon, может кто знает как изменить фон при наведении?
Код:
this.setStyleSheet("QMenu::icon {background-color: rgba(0,0,0,0);}")
этот код не помогает.


Название: Re: Фон иконки в QMenu
Отправлено: kambala от Март 14, 2012, 14:51
тогда уж QMenu::icon:hover


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Март 14, 2012, 14:59
Код:
"QMenu::icon:hover {background-color: rgba(0,0,0,0);}" 
не помогло
Код:
"QMenu::icon:hover {background-color: transparent;}"
тоже.


Название: Re: Фон иконки в QMenu
Отправлено: Bepec от Март 14, 2012, 15:01
минимально компилируемый проект в архив и сюда. И через 10-15 минут возможно тебе дадут решение.


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Март 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);}' \
                     )


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Март 15, 2012, 09:51
работающие исходники выложил. Есть идеи?


Название: Re: Фон иконки в QMenu
Отправлено: Bepec от Март 15, 2012, 10:04
*моя осторожно впихнула pySide в Visual studio. Зажмурившись, VS буква за буквой читала файл и с отвращением выдавала error'ы. Прочитав всё, VS в гневе стёрла исходники с еретическим кодом*
:)


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Март 15, 2012, 10:30
*моя осторожно впихнула pySide в Visual studio. Зажмурившись, VS буква за буквой читала файл и с отвращением выдавала error'ы. Прочитав всё, VS в гневе стёрла исходники с еретическим кодом*
:)
а вот код и не еретический совсем=)
с VS конечно перебор, ну а если посмотреть на это как только на Qt, может предположения появятся?=)


Название: Re: Фон иконки в QMenu
Отправлено: Bepec от Март 15, 2012, 10:32
После обеда посмотрю. А то счас чёт энергия на нуле :)


Название: Re: Фон иконки в QMenu
Отправлено: ecspertiza от Март 16, 2012, 08:14
Тоже пробовал играться с ::icon для меню, и возникает такое ощущение что оно просто не работает :) ::item отрабатывает хорошо, а вот например заменить цвел левой панельки (где иконки расположены) не выходит.


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Март 28, 2012, 09:08
да, похоже этого никто не знает, за такое время уже нашёлся бы ответ.


Название: Re: Фон иконки в QMenu
Отправлено: Bepec от Март 28, 2012, 09:13
Я болел ;) А так интересный вопросик конечно.


Название: Re: Фон иконки в QMenu
Отправлено: ecspertiza от Март 28, 2012, 15:21
Думается что через css никак если только через style или переопределить paintEvent у меню может что и выйдет.


Название: Re: Фон иконки в QMenu
Отправлено: Bepec от Март 28, 2012, 15:49
У меня ток один вопрос - как вы сделали полупрозрачным меню? :D


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Апрель 02, 2012, 11:15
У меня ток один вопрос - как вы сделали полупрозрачным меню? :D
Код:
background-color: rgba(0,0,0,150);


Название: Re: Фон иконки в QMenu
Отправлено: spirits25 от Апрель 02, 2012, 11:39
возможно это тот же баг? https://bugreports.qt-project.org/browse/QTBUG-2614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel (https://bugreports.qt-project.org/browse/QTBUG-2614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel)