стиль cleanlook для окна сообщения pyqt4

У меня есть приложение PYQT4. Я пытаюсь отображать много разных сообщений на основе взаимодействия с пользователем. Проблема, с которой я сталкиваюсь, заключается в том, что отображаемое сообщение с использованием QMessageBox не отображается в чистом стиле, тогда как другая часть приложения хорошо работает с чистым стилем.

Я пытаюсь использовать следующий код, но он не работает для сообщения.

# set messagebox properties
msgbox=QMessageBox()
font = QFont()
font.setFamily(_fromUtf8("Levenim MT"))
font.setPointSize(15)
msgbox.setFont(font)
msgbox.setStyle(QStyleFactory.create('Cleanlooks'))
msgbox.information(self,"Download Message", "donuts")

может кто-нибудь сказать мне, как сделать это в чистом стиле, а также


person Sri    schedule 06.09.2013    source источник


Ответы (1)


Чтобы изменить стиль вашего приложения, вы должны использовать QApplication.setSyle, затем иметь единый стиль во всем графическом интерфейсе.

Установка стиля QWidgets устанавливает стиль только для самого виджета.

QWidget.setStyle:

Устанавливает стиль графического интерфейса виджета в style. Право собственности на объект стиля не передается.

Если стиль не установлен, виджет вместо этого использует стиль приложения, QApplication.style().

Настройка стиля виджета не влияет на существующие или будущие дочерние виджеты.

Предупреждение: эта функция особенно полезна для демонстрационных целей, когда вы хотите продемонстрировать возможности стиля Qt. Реальные приложения должны избегать этого и вместо этого использовать один согласованный стиль графического интерфейса.

Это означает, что если вы хотите изменить стиль виджета и всех его дочерних элементов, вам нужно явно установить его для всех дочерних элементов, перебирая их:

cleanlooks = QStyleFactory.create('cleanlooks')
msgbox.setStyle(cleanlooks)
for child in msgbox.findChildren(QWidget):
    child.setStyle(cleanlooks)
person mata    schedule 06.09.2013
comment
Благодарю за разъяснение. - person Sri; 11.09.2013