É possível acessar propriedades personalizadas do QT Designer após a conversão para o Python?

StackOverflow https://stackoverflow.com/questions/2321264

  •  22-09-2019
  •  | 
  •  

Pergunta

Sou novo no PYQT e QT Designer e estou tentando criar um método fácil para relacionar o QWidgets com as tabelas e colunas em um banco de dados SQLite. Minha idéia era marcar cada qwidget no designer com duas propriedades personalizadas, uma com o nome da tabela e outro com o nome da coluna. Mais tarde, eu usaria as informações fornecidas pelo Designer para criar minha própria classe, que cria um relacionamento entre o banco de dados QWIDETS e SQLITE.

Adicionar as propriedades personalizadas no designer parece funcionar bem, no entanto, o código para essas propriedades personalizadas não é gerado ao converter o XML do designer em Python (usando o UIC). Alguém fez isso com êxito? Talvez exista uma maneira melhor de fazer isso?

Obrigado,

Eric

Foi útil?

Solução

Verificação de saída Este artigo Eric. Observe particularmente a seção intitulada "Produzindo um plugin". A computação da margem dos rios tem outro ótimo Referência Pyqt.

EDIT: Eu tenho lendo mais um pouco e não consigo encontrar uma maneira de fazer isso automaticamente para você. Se você estiver bem com a adição de propriedades dinâmicas no tempo de execução, em vez do tempo de design, poderá realizar o mesmo resultado final. Aqui é uma explicação do método setProperty () no QObject, do qual o QWidget herda.

Se isso não funcionar para você, parece que você pode ser melhor seguir uma abordagem menos genérica. Em vez de usar um qwidget genérico, você poderá usar uma classe personalizada derivada do QSQLTableModel para acompanhar suas informações de conexão. Outra maneira seria apenas usar um QTableView e fazer as consultas para preencher os dados. Aqui e aqui são artigos sobre bancos de dados no qt. Você pode se inspirar para um novo design de um deles.

Outras dicas

Se você adicionou uma propriedade em designer chamada "MyProperty", busque -a com ...

mywidget.property("myproperty")

Isso funciona bem no PYQT 4.8.3, talvez não tenha funcionado em versões anteriores.

Eu não tive muita sorte em usar a ferramenta de designer - geralmente acabo fazendo alguns layout aproximado, usando pyuic e depois editar e adicionar outras coisas à mão.

Parece que você poderia facilmente realizar sua tarefa criando sua própria classe personalizada que herda QWidget e tem as propriedades adicionais que você descreveu. Com minhas experiências tentando usar widgets personalizados no designer, acho que a maneira 'mais fácil' é apenas escrever a classe e definir o layout manualmente.

Eu sei que isso não responde exatamente à sua pergunta, mas talvez você tente algumas das minhas sugestões.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top