KDDockWidgets, uma estrutura de implementação avançada para QDockWidget

KDQDockWidgetName

O Grupo KDAB é uma consultoria de software para aplicações Qt, C ++ e OpenGL para diferentes plataformas (desktop, embarcado e móvel), além disso fornece tutoria para desenvolver aplicações Qt do zero e na transferência de todos os quadros populares para o Qt.

Ao passar dos anos, KDAB contribuiu e financiou o desenvolvimento de QDockWidget. Mas, como as mudanças e correções de bugs levavam muitos dias para implementar, usando QdockWidget, Acabou não sendo uma boa opção, dando origem ao KDDockWidgets.

KDDockWidgets é uma estrutura de encaixe avançada para QDockWidgets, com o qual ele expande seu uso adicionando funções não suportadas por QDockWidgets.

QdockWidget combina nativamente código GUI com lógica com estado, como torna muito difícil avançar com novos recursos, o que causa grande complexidade na sua implementação nas diferentes plataformas. Por ser um componente básico de uma série de interfaces gráficas de usuário, com ele você pode mover todos os elementos da janela (barras de ferramentas, grupos de widgets, etc.) para onde quiser.

No entanto, KDAB argumentou que a manutenção do código QDockWidgets não é muito fácil, enquanto ele comenta que:

O KDDockWidgets nasceu da minha necessidade de preservar minha sanidade depois de ter trabalhado em dois projetos que exigiam ampla personalização. Um em que tentamos trabalhar diretamente a montante, mas a taxa de regressão acabou sendo muito grande.

E outro em que tomei o caminho de usar APIs privadas, eventos de mouse falsos e filtros de eventos, o que parecia uma boa ideia no início, mas acabou sendo um mundo de dor. Além disso, nossos clientes estavam ficando mais criativos com seus pedidos, então estava claro que precisávamos de uma estrutura de encaixe melhor.

O principal problema é o seu design, bastante monolítico, mas configurável (podemos escolher as funções disponíveis para o usuário, mesmo que poucas pessoas o façam, para animações), com um código espaguete (felizmente misturando lógica e estado do componente). Portanto, qualquer mudança pode criar um grande número de regressões.

É por isso que KDAB decidiu criar KDDockWidgets, com o qual busca simplificar bastante o design de QDockWidgets, ao mesmo tempo em que facilita sua adaptação a situações particulares.

KDDockWidgets fornece as seguintes funções:

  • Ser capaz de encaixar widgets em uma janela flutuante e encaixar esse grupo na janela principal
  • Encaixe em qualquer janela, não apenas na janela principal
  • Encaixando no centro da janela principal
  • Suporte para guias destacáveis ​​no widget central dentro da janela principal
  • Ser capaz de separar guias de uma barra de guias em uma área de encaixe
  • Capacidade de combinar várias guias combinando vários componentes.
  • Exponha widgets de ajuda internos para que o usuário possa personalizá-los ou fornecer os seus próprios.
  • Os grupos de componentes podem alternar livremente de uma janela externa (que contém apenas este grupo de componentes) para a janela principal (um recurso parcialmente implementado no Qt 5.10).
  • Personalize widgets de guia
  • Personalize as barras de título
  • Personalizar molduras de janela
  • Além de destacar que a principal mudança é a adição de indicadores precisos para remover elementos da GUI, além do fato de que a noção de widget central desaparece, já que como tal não é mais um elemento específico.

A nova organização separa claramente a lógica da interface gráfica, para que o tempo de execução subjacente seja pode ser facilmente reutilizado para interfaces Qt Quick (o que é esperado em última análise). Também torna mais fácil personalizar a interface, o usuário pode fornecer seus próprios widgets para qualquer parte da interface.

Além disso, KDDockWidgets pretende ser uma estrutura, então você pode facilmente sobrescrever as interfaces para fornecer aparência e comportamento personalizados. KDDockWidgets é uma estrutura de código aberto, que está sob as licenças GPLv2 e GPLv3.

O código KDDockWidgets, bem como uma demonstração dele estão disponíveis no link a seguir.


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.