2015-04-14 7 views
0

У меня есть класс Qt, который наследуется от QMainWindow. Конструктор класса создает два виджета, которые добавляются к горизонтальной компоновке объекту следующим образом:QMainWindow: размер виджета по размеру экрана

MyWindow::MyWindow() 
{ 
    resize(QDesktopWidget().availableGeometry(this).size()); 
    display = new MyWidget(this); 
    display->setSizePolicy(QSizePolicy::Expanding, 
          QSizePolicy::Expanding); 

    current = new MyWidget(this); 
    current->setSizePolicy(QSizePolicy::Expanding, 
          QSizePolicy::Expanding); 

    QHBoxLayout *layout = new QHBoxLayout(); 
    layout->addWidget(display); 
    layout->addWidget(current); 

    QFrame* frame = new QFrame(); 
    frame->setFrameShape(QFrame::StyledPanel); 
    frame->setLayout(layout); 
    setCentralWidget(frame); 

    show(); 
} 

Это отображает виджет сторону стороны друг от друга. Тем не менее, я бы хотел, чтобы один из виджетов занимал 30% горизонтального пространства, а другой занимал остальные 70%. Я также хотел бы, чтобы виджеты расширялись или сокращались, если изменять размер основного окна, но сохраняя эти отношения.

ответ

1

При размещении виджета в макете вы можете указать его коэффициент растяжения:

QHBoxLayout *layout = new QHBoxLayout(); 
layout->addWidget(display, 3); 
layout->addWidget(current, 7); 

http://doc.qt.io/qt-5/qboxlayout.html#addWidget

+0

Удивительно. Спасибо. Не могу поверить, что я этого не замечал. – Luca

Смежные вопросы