AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / Perguntas / 76947366
Accepted
ChenZX
ChenZX
Asked: 2023-08-22 01:03:24 +0800 CST2023-08-22 01:03:24 +0800 CST 2023-08-22 01:03:24 +0800 CST

É possível usar uma classe para definir uma guia na UI?

  • 772

Olá a todos: tentei construir uma GUI que possui várias abas. Se eu colocar todas as funções em uma classe, a classe será muito longa e poderá haver algumas funções de widget com o mesmo nome. Assim, eu gostaria de usar uma classe para construir uma aba (chamada de classe tab), que retorna um TagGroup. Em seguida, use uma classe uiframe para combinar todos os TagGroups das classes da guia. Mas tenho 3 perguntas:

  1. Onde definir o método de mudança, na classe tab?
  2. Onde definir o ouvinte, na classe tab?
  3. Se eu quiser usar o método change da classe tab a para controlar algo na classe b, isso é possível?

Se alguém tiver uma ideia melhor para tornar a classe uiframe mais elegante, também será apreciada.

A propósito, existe algum código python que possa gerar facilmente a UI do Gatan?

Cumprimentos

Chen ZX

dm-script
  • 1 1 respostas
  • 15 Views

1 respostas

  • Voted
  1. Best Answer
    Mike Kundmann
    2023-08-22T07:04:54+08:002023-08-22T07:04:54+08:00

    Como você descobriu, as classes que definem as propriedades e o comportamento dos diálogos DM personalizados são inerentemente longas e podem ser bastante complexas. Não creio que haja alguma maneira de realmente evitar isso. Qualquer classe de diálogo personalizada normalmente definirá e implementará dezenas de métodos. No entanto, esses métodos membros são provavelmente sua melhor esperança para modularizar seu código de diálogo.

    Sua pergunta provavelmente é muito mais ampla do que você imagina e talvez seja necessário dividi-la em várias partes para cobrir todos os detalhes envolvidos. No entanto, começarei fornecendo uma estratégia de alto nível e alguns esclarecimentos sobre classes, objetos e funções.

    Certamente é uma boa ideia modularizar a geração dos vários componentes de qualquer diálogo DM baseado na classe UIFrame. Geralmente é suficiente fazer isso por meio de funções (métodos) definidas na classe de diálogo personalizada.

    Primeiro, alguns comentários gerais sobre conceitos e terminologia. É útil perceber que UIFrame é uma classe base e que o código que se escreve para definir, representar e dar suporte a um diálogo personalizado é uma extensão dessa classe base. Dizemos que a classe de diálogo personalizada é “derivada de” UIFrame. Quando alguém chama Alloc() em uma classe de diálogo personalizada, isso retorna um Object que é uma instância específica da classe de diálogo personalizada, ou seja, um painel de interface do usuário exibido e em execução com manipulação de eventos ativos. Observe que é possível iniciar várias instâncias de um determinado diálogo usando a mesma classe de diálogo personalizado (derivada de UIFrame).

    Voltando à sua pergunta específica sobre a modularização do código da guia em sua classe de diálogo personalizada, as palavras que você usa para descrever o que você gostaria de alcançar [... usar uma classe para construir uma guia (chamada classe de guia), que retorna um TagGroup] são bastante reveladores. O que eles descrevem é realmente a ação de uma função, ou seja, o fato de retornar um TagGroup que é o descritor do elemento tab. Assim, minha sugestão seria simplesmente definir cada uma de suas guias de diálogo com uma função diferente (ou seja, método de sua classe de diálogo personalizada). Se eles forem semelhantes o suficiente, você poderá até mesmo parametrizar sua função de definição de guia para poder usá-la para retornar um descritor TagGroup (diferente) para cada uma de suas guias específicas.

    Quanto às suas perguntas sobre manipulação de eventos (ou seja, métodos de mudança e ouvintes), em última análise, esses métodos sempre precisarão fazer parte de sua classe de diálogo personalizada porque o DM sempre invoca os métodos de mudança por meio de sua referência ao seu objeto de diálogo específico (ou seja, um dada instância da sua classe de diálogo personalizada). É claro que esses métodos de manipulação de eventos podem usar outros métodos/funções (e até mesmo outros objetos) para realizar seu trabalho, mas você precisará definir e implementar métodos em sua classe de diálogo personalizada que o DM chamará em resposta a eventos e mudanças. dentro do seu objeto GUI personalizado.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    destaque o código em HTML usando <font color="#xxx">

    • 2 respostas
  • Marko Smith

    Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}?

    • 1 respostas
  • Marko Smith

    Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)?

    • 2 respostas
  • Marko Smith

    Por que as compreensões de lista criam uma função internamente?

    • 1 respostas
  • Marko Smith

    Estou tentando fazer o jogo pacman usando apenas o módulo Turtle Random e Math

    • 1 respostas
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 respostas
  • Marko Smith

    Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)?

    • 4 respostas
  • Marko Smith

    Por que o construtor de uma variável global não é chamado em uma biblioteca?

    • 1 respostas
  • Marko Smith

    Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto?

    • 1 respostas
  • Marko Smith

    Somente operações bit a bit para std::byte em C++ 17?

    • 1 respostas
  • Martin Hope
    fbrereto Por que a resolução de sobrecarga prefere std::nullptr_t a uma classe ao passar {}? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 Você pode usar uma lista de inicialização com chaves como argumento de modelo (padrão)? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi Por que as compreensões de lista criam uma função internamente? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A formato fmt %H:%M:%S sem decimais 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python std::views::filter do C++20 não filtrando a visualização corretamente 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute Por que 'char -> int' é promoção, mas 'char -> short' é conversão (mas não promoção)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa Por que o construtor de uma variável global não é chamado em uma biblioteca? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis Comportamento inconsistente de std::common_reference_with em tuplas. Qual é correto? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev Por que os compiladores perdem a vetorização aqui? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan Somente operações bit a bit para std::byte em C++ 17? 2023-08-17 17:13:58 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve