Qt layout em QMainWindow
-
19-09-2019 - |
Pergunta
Eu projetei um QMainWindow
com o designer QtCreator's
. Trata-se do elemento central de default (a QWidget
) que contém uma QVBoxLayout
com todos os outros widgets na mesma. Agora tudo que eu quero, é que o QVBoxLayout
automaticamente ocupa todo o widgets de centrais espaço retângulo.
Como posso fazer isso? Eu não encontrei qualquer propriedade utilizável nem nas propriedades de widgets central nem os QVBoxLayout's
.
Solução
Você não tem que criar um QVBoxLayout
manualmente. Basta seleccionar a sua QWidget
central e pressionar um botão make-layout.
Outras dicas
Se você quiser fazê-lo com o código em vez de usar QtCreator
, você pode definir o layout em um QWidget
e defina a QWidget
como o widget central da janela principal assim:
#include <QtGui>
#include <QWidget>
#include <QHBoxLayout>
#include "mainwindow.h"
MainWindow::MainWindow() {
// Set layout
QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(myWidget1);
layout->addWidget(myWidget2);
// Set layout in QWidget
QWidget *window = new QWidget();
window->setLayout(layout);
// Set QWidget as the central layout of the main window
setCentralWidget(window);
}
Adicionar pelo menos um widget no seu MainWindow
. Em seguida, selecione a janela clicando sobre ela e clique no botão VerticalLayout
no topo da QTCreator
. Você Vertical layout é automaticamente adicionado ao widget central e enche toda a superfície.
Esta já foi respondida, mas eu pessoalmente prefiro manter todos os elementos de comando e layouts adicionados manualmente ao formulário. Eu não adicionar controles nos arquivos de classe, eu simplesmente ligar os sinais / ranhuras para ocultar / mostrar Widgets relevantes para a lógica na classe, dentro da classe.
Para adicionar manualmente um layout para qualquer widget primeiro você deve adicionar pelo menos um widget filho / controle. Isso não estava totalmente claro para mim e eu estava tentando adicionar o layout em primeiro lugar.