QApplication в Юникоде - PullRequest
       4

QApplication в Юникоде

4 голосов
/ 01 ноября 2010

Конструктор QApplication принимает (int argc, char ** argv) для обработки любых определенных аргументов командной строки Qt.

Что если мое приложение находится в юникоде?А у меня есть wchar_t ** argv?

Кажется немного глупым создавать char * копию всех аргументов командной строки для передачи в библиотеку, которая сама является юникодом.

Ответы [ 2 ]

8 голосов
/ 01 ноября 2010

Да, было бы. Если бы не было этой заметки :

Предупреждение: в Unix этот список построен из параметров argc и argv передается конструктору в основная функция. Строковые данные в ARGV интерпретируется с использованием QString :: fromLocal8Bit (); следовательно это невозможно пройти, например, Японские аргументы командной строки на система, которая работает в локали Latin1. Большинство современных систем Unix не имеют это ограничение, как они Unicode основе.

В Windows на основе NT это ограничение тоже не относится. В Windows arguments () не строятся из содержимое argv / argc, как содержимое не поддерживает Unicode. Вместо этого arguments () строятся из возвращаемое значение GetCommandLine (). Как Результатом этого является строка, заданная arguments (). at (0) не может быть Название программы в Windows, в зависимости от как приложение было запущено.

По общему признанию, я не понимаю слово либо .

0 голосов
/ 01 ноября 2010

Ну, main всегда получит char** argv, так что именно этого и ожидает QApplication. Вы также можете преобразовать их (используя какую локаль / кодировку?) В широкие строки, если вы хотите делать другие вещи с аргументами команды.

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