QComboBox setMaxVisible () не работает со стилем фьюжн - PullRequest
1 голос
/ 20 июня 2019

Я учил себя, как использовать python и PyQt5 для создания пользовательского интерфейса.Стиль Fusion выглядел очень хорошо, но я заметил, что когда я применяю этот стиль к приложению, команда QComboBox setMaxVisibleItems больше не работает.Вместо этого в стиле fusion QComboBox отображаются все элементы одновременно (или столько элементов, сколько позволяет размер экрана), даже если применяется setMaxVisibleItems.

Я подумал, что, возможно, я использовал команду неправильно, поэтомуЯ удалил стиль слияния и попытался установить максимальное количество видимых элементов с несколькими различными значениями.Каждый работал нормально, так что я уверен, что это стиль фьюжн.Есть ли способ изменить стиль фьюжн или заставить его применить setMaxVisibleItems?Ниже приведен пример кода для него.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QComboBox, QPushButton

class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        combo = QComboBox(self)
        counter = 1
        while (counter < 21):
            combo.addItem(str(counter))
            counter = counter + 1
        combo.setMaxVisibleItems(5)

        combo.move(50, 50)

        self.qlabel = QLabel(self)
        self.qlabel.move(50,16)

        combo.activated[str].connect(self.onChanged)      

        self.setGeometry(50,50,320,200)
        self.setWindowTitle("QLineEdit Example")
        self.show()

    def onChanged(self, text):
        self.qlabel.setText(text)
        self.qlabel.adjustSize()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    #app.setStyle("fusion")
    ex = Example()
    sys.exit(app.exec_())

Применение стиля fusion означает, что приложение отображает все 20 элементов одновременно.Комментирование стиля фьюжн означает, что приложение отображает 5 элементов одновременно.

1 Ответ

1 голос
/ 20 июня 2019

Свойство maxVisibleItems соблюдается не всеми стилями.

Примечание. Это свойство игнорируется для нередактируемых комбинированных списков в стилях, которые возвращают значение true для QStyle :: SH_ComboBox_Popup, таких как стиль Mac или стиль Gtk +.

Обратите внимание, что если ваш комбинированный список можно редактировать, он, вероятно, будет работать так, как ожидалось. То, как ведут себя стили, заключается в том, что они способны постоянно соответствовать нативному поведению, которое они пытаются имитировать. Я не знаю причину, по которой Fusion не придерживается maxVisibleItems.

Вы всегда можете создать свой собственный стиль - на основе Fusion - для изменения определенного поведения. В общем случае рекомендуется соблюдать ожидания пользователя по отношению к собственным стилям (или к стилю, который они настроили), а не устанавливать стиль вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...