QML: Можно ли использовать стандартные целочисленные значения RGB?

Я использую Qt 5.7 в Windows 10 и новичок в QML. В настоящее время я добавляю некоторые цвета в свое приложение, и меня поразило, что, похоже, нет способа использовать простые целочисленные значения RGB (не шестнадцатеричные) для цветов. Есть (насколько мне известно) три прямых способа (без использования функций Qt C++ QColor в сочетании с кодом QML) установки элемента на определенный цвет:

  • Qt.rgba(...) - у меня есть две проблемы, первая из которых - использование чисел с плавающей запятой для значений RGB, а вторая - странный вызов - я довольно часто забываю, что мне нужно поставить Qt. перед функция, и, разумеется, это раздражает (но это только я: P):

    Rectangle {
      width: 100
      height: 100
      color: Qt.rgba(0.502, 0.502, 0.502, 1)
      border.width: 1
    }
    
  • # - снова у меня есть две проблемы, первая из которых заключается в том, что очевидная несогласованность, если мы сравним ее с функцией Qt.rgba(...) с точки зрения размещения значения alpha (здесь впереди, а не в конце, как последний аргумент Qt.rgba(...)) и второй - использование шестнадцатеричных чисел:

    Rectangle {
      width: 100
      height: 100
      color: "#FF808080"
      border.width: 1
    }
    
  • имена цветов - это хорошо (возможно), если английский является вашим родным языком и вы знакомы с огромным количеством имен цветов, доступных в Qt (в котором используется Именование цветов SVG):

    Rectangle {
      width: 100
      height: 100
      color: "grey"
      border.width: 1
    }
    

Все три приведенных выше соглашения о цвете представляют один и тот же цвет (RGB: 128, 128, 128). Я действительно предпочитаю использовать обычные целочисленные значения, так как я лучше знаком с ними. Можно ли использовать их без каких-либо дополнительных усилий в QML?


person rbaleksandar    schedule 17.08.2016    source источник
comment
Не знаю, работает ли это, но color: Qt.rgba(128/255., 128/255., 128/255., 1) стоит попробовать.   -  person Gwen    schedule 17.08.2016


Ответы (1)


No.

Основываясь на том, что сказал @Gwen, вы можете определить свою собственную функцию, которая принимает целые числа и выполняет преобразование в числа с плавающей точкой, а затем вызывает ее везде.

person Mitch    schedule 17.08.2016
comment
Есть ли причина, по которой это не включено в стандартную функцию? - person rbaleksandar; 17.08.2016
comment
Я понятия не имею. Вам придется спросить в списках рассылки в надежде, что разработчик Qt, который некоторое время был рядом, увидел это. - person Mitch; 17.08.2016
comment
@rbaleksandar Я использую QML уже 4 года, даже не думал об использовании целых чисел, таких как цвета в пользовательском интерфейсе. - person QtRoS; 17.08.2016
comment
Хорошо для вас, я начал с QML около 3 недель назад. А до этого я использовал много целочисленных значений RGB (не в контексте разработки пользовательского интерфейса). Тем не менее тот факт, что QColor предоставляет такую ​​функцию, означает, что есть люди, которые находят ее действительно полезной. - person rbaleksandar; 17.08.2016
comment
Вы можете отправить предложение в Jira, но я думаю, что это одна из тех вещей, к которым вы со временем привыкнете. - person Mitch; 17.08.2016