Qt: Философская дилемма дизайна пользовательского интерфейса - PullRequest
5 голосов
/ 03 февраля 2011

Наше настольное приложение должно работать на Mac, Windows и Linux. Вот почему мы выбрали Qt. Раньше у нас было три отдельные базы кода для этих трех платформ.

В старой реализации мы рисовали нашу собственную "подпись окна" с помощью кнопок Закрыть, Свернуть, Развернуть. Это выглядит одинаково на всех трех платформах.

На этот раз я не уверен. Я подумал о том, чтобы позволить Qt использовать любые кнопки заголовка и заголовка по умолчанию для каждой платформы, прямоугольные кнопки «X», «_», круглые кнопки на левой стороне Mac и все, что идет с Linux / Ubuntu и т. Д.

Это мудрое решение? Одна из вещей, которые меня толкают, это то, что мне нужно написать код изменения размера для класса окна, который я пишу, код перетаскивания, работу с кнопками и все остальное, что связано с написанием вашей собственной подписи Windows.

Я заметил, что если я использую это, "Qt :: FramelessWindowHint", чтобы удалить заголовок, я автоматически потеряю свой захват изменения размера. Есть ли способ обойти это? Кроме того, как бы вы реализовали свой собственный код перетаскивания окон? (При условии, что вы знали область, которую хотите использовать в качестве «перетаскиваемой надписи». Похоже, мне нужно поймать кнопку в этой области, войти в режим перетаскивания, отследить движения мыши и переместить окна в соответствии с дельтами. Аналогично для изменения размера. Я делал это раньше на других платформах, но я хотел спросить, есть ли в Qt механизм, позволяющий мне делать это «из коробки»?

Ответы [ 3 ]

11 голосов
/ 03 февраля 2011

Я подумал о том, чтобы позволить QT использовать кнопки заголовка и заголовка по умолчанию для каждой платформы

Пожалуйста, сделай это. Как пользователь Mac, некоторые вещи более запутанны, чем «универсальные» интерфейсы, которые должны выглядеть везде одинаково. Интерфейс в стиле Windows сбивает с толку. Интерфейс Mac Style - это то, к чему я привык и чего хочу.

Если вам нужно писать (и поддерживать и поддерживать) меньше кода, это даже лучше.

Просто используйте как можно больше "родных". Напишите как можно меньше кода.

1 голос
/ 03 февраля 2011

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

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

0 голосов
/ 03 февраля 2011

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

Например, Apple довольно строг в своем UI Design, и поэтому пользователи Mac ожидают, что инструмент будет работать особым образом.

Это также относится к сочетаниям клавиш, и это, вероятно, самая сложная часть, поскольку OS X, Linux и Windows имеют свои собственные шаблоны сочетаний клавиш, и найти правильную комбинацию не всегда просто.

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