Мне было интересно, как Qt делает все свои стили. Мне нужно создать собственный элемент управления, и я бы хотел, чтобы он соответствовал стандартам, чтобы мой элемент управления не чувствовал себя неуместно на разных платформах и в разных стилях.
Например, мне понадобится курсор, который используется в тексте, предоставляет ли Qt метод для его рисования? И как мне реализовать его так, чтобы я не перерисовывал весь виджет для мигания курсора?
То, что вы обычно делаете для создания пользовательских виджетов, состоит из двух частей:
Это означает, например, что если вы хотите создать пользовательский виджет для ввода текста, используйте существующий и изменяйте только те части, которые необходимо изменить при перегрузках. Или, возможно, ваша настройка вообще не требует изменения части ввода текста, а просто вставьте ее в нужном месте. Виджет, о котором я сейчас говорю, QLineEdit
, Это на самом деле очень простой и настраиваемый.
На самом деле существует два метода (по крайней мере), как комбинировать виджеты, чтобы сформировать свой собственный. Первый — создать файл .ui и использовать его в своем пользовательском классе (или создавать виджеты в коде). Второй заключается в использовании QGraphicsScene
, Там можно комбинировать рисование от руки (QPainter
), с настраиваемыми объектами и полноценными виджетами.
Если вам слишком сложно решить вашу проблему, комбинируя виджеты и / или производные от них, последним средством всегда является использование существующего виджета с желаемой функциональностью (например, QLineEdit
с курсором редактирования текста) и прочитайте / скопируйте код (Примечание: могут возникнуть проблемы с лицензией).
Чтобы лучше ответить на ваш вопрос, нам понадобится более подробная информация о том, чего именно вы хотите достичь.
Других решений пока нет …