Pergunta

Para aqueles de vocês que não tenho lido os meus questoins Qt, estou aprendendo Qt para um projeto. Tenho apenas uma experiência limitada com design GUI em tudo, e não em Qt.

Eu tenho um layout horizontal que deseja preencher com alguns botões. Eu posso alimentar estes botões em muito bem, mas meus ex-quadrados botões são esticados horizontalmente para ocupar mais espaço.

Eu quero que o gerenciador de layout determinar a melhor maneira de tamanho estes botões, mas eu também quero suas proporções originais permanecem intactos. Por exemplo, se eu começar seria com 32x32 botões que precisam encolher para caber todos eles no layout, eu quero que eles encolher proporcionalmente para que a largura de escala de altura é mantida. 20X20, 16X16, 12X12 seria tudo muito bem, mas 24X16 seria um exemplo de dimensões que são inaceitáveis.

Eu já consertou com políticas de tamanho dos botões e opções de estiramento. Não estou vendo, mesmo depois de ler as classes QPushButton e QHboxLayout como fazer isso. Como é que é realizado?

Graças.

Foi útil?

Solução

Enquanto eu entendi a pergunta corretamente, eu acho que você quer é QBoxLayout::addStretch(). Isto irá adicionar um objeto espaçador que preenche o espaço não utilizado. Assim, os botões terão seu tamanho ideal e o espaçador irá preencher o resto. Você pode tentar experimentar isso no Designer, é mais fácil do que o / compilação ciclo de gravação / run.

Outras dicas

Você deve dar uma olhada nas respostas a esta questão . Este é um resumo da minha resposta lá.

Você precisa criar um derivado costume de QLayoutItem, que substitui bool hasHeightForWidth() e int heightForWidth( int width ) para preservar a relação de aspecto. Você poderia passar o botão e consultá-lo, ou você pode apenas definir a relação diretamente. Você também vai precisar para se certificar do widget () retorna um ponteiro para o botão adequado.

Uma vez feito isso, você pode adicionar um item de layout para um layout da mesma maneira que você faria com um widget. Assim, quando o botão é adicionado, alterá-lo para usar seu personalizado classe de item de layout.

Eu não testei nada disso, por isso é uma solução teórica neste momento. Eu não sei de qualquer maneira de fazer isso solução através de designer, se isso era desejado.

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