Как сделать индикатор выполнения с TraitsUI и Qt5?

Приложения, которые не удовлетворяются только 256 различными символами, имеют варианты использования широких символов (более 8 бит) или кодирования переменной длины (многобайтовая кодировка в терминологии C ++), таких как UTF-8. Широким символам обычно требуется больше места, чем кодирование с переменной длиной, но они быстрее обрабатываются. Многоязычные приложения, которые обрабатывают большие объемы текста, обычно используют широкие символы при обработке текста, но преобразуют его в UTF-8, когда хранят его на диске.

Единственное отличие между string и wstring - тип данных символов, которые они хранят. Строка хранит char s, размер которой должен быть не менее 8 бит, поэтому вы можете использовать строки для обработки, например. ASCII, ISO-8859-15 или UTF-8. В стандарте ничего не говорится о наборе символов или кодировке.

Практически каждый компилятор использует набор символов, первые 128 символов которого соответствуют ASCII. Это также относится к компиляторам, использующим кодировку UTF-8. Важное значение, которое следует учитывать при использовании строк в UTF-8 или какой-либо другой кодировке переменной длины, состоит в том, что индексы и длины измеряются в байтах, а не в символах.

Тип данных wstring wchar_t, размер которого не определен в стандарте, за исключением того, что он должен быть как минимум равным char, обычно 16 бит или 32 бита. wstring может использоваться для обработки текста в реализации, определенной широкосимвольной кодировкой. Поскольку кодировка не определена в стандарте, преобразовать между строками и wstrings непросто. Нельзя предположить, что wstrings также будет иметь кодировку с фиксированной длиной.

Если вам не нужна поддержка нескольких языков, вам может быть хорошо, если вы используете только обычные строки. С другой стороны, если вы пишете графическое приложение, часто бывает, что API поддерживает только широкие символы. Тогда вы, вероятно, захотите использовать те же самые широкие символы при обработке текста. Имейте в виду, что UTF-16 является кодировкой переменной длины, что означает, что вы не можете считать length(), чтобы вернуть количество символов. Если API использует кодировку с фиксированной длиной, такую ​​как UCS-2, обработка становится легкой. Преобразование между широкими символами и UTF-8 трудно сделать переносимым образом, но, опять же, API вашего пользовательского интерфейса, вероятно, поддерживает преобразование.

0
задан Daniel Farrell 17 January 2019 в 09:32
поделиться

1 ответ

Qt5 должен поддерживаться. См. https://github.com/enthought/traitsui/blob/master/CHANGES.txt . Если у вас возникли проблемы с этим, пожалуйста, откройте вопрос о GH.


Обновление:

Попробуйте что-то вроде этого (частично, не проверено):

from traitsui.editors import ProgressEditor
(other imports etc)...

class ProgressDialog(HasTraits):
    progress = Int
    view = View(Item('progress', show_label=False,
                     editor=ProgressEditor(min=0, max=100)),
                title='Progress'
                )
0
ответ дан Jonathan March 17 January 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: