QLayout не изменяет размеры виджета

156
23 февраля 2019, 06:30

При изменении размеров родительского окна, меняется размер только у одного виджета. Необходимо, чтобы они изменялись одновременно.
Сейчас это работает примерно так: Необходимо, чтобы это работало так:
main.cpp

#include <QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[]) {

    QApplication app(argc, argv);
    MainWindow window;
    window.show();
    return app.exec();
}

MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "CentralWidget.h"
class MainWindow : public QMainWindow
{
    Q_OBJECT
    private:
        CentralWidget *m_centralWidget;
    public:
        explicit MainWindow(QMainWindow *parent=nullptr);
};
#endif   

MainWindow.cpp

#include "MainWindow.h"
MainWindow::MainWindow(QMainWindow* parent ) : QMainWindow(parent)
{
    m_centralWidget = new CentralWidget(this);
    setCentralWidget(m_centralWidget);
}  

CentralWidget.h

#ifndef CENTRALWIDGET_H
#define CENTRALWIDGET_H
#include <QWidget>
#include <QTableWidget>
#include <QResizeEvent>
#include "qcustomplot.h"
class CentralWidget : public QWidget
{
    Q_OBJECT
    private:
        QCustomPlot *m_plotWidget;
        QTableWidget *m_tableWidget;
        virtual void resizeEvent(QResizeEvent *event);
    public:
        explicit CentralWidget(QWidget *parent=nullptr);
};
#endif   

CentralWidget.cpp

#include <QHBoxLayout>
#include <QDebug>
#include "CentralWidget.h"
CentralWidget::CentralWidget(QWidget* parent) : QWidget(parent)
{
    m_plotWidget = new QCustomPlot;
    m_tableWidget = new QTableWidget;

    QHBoxLayout *layout = new QHBoxLayout;
    layout->addWidget(m_plotWidget);
    layout->addWidget(m_tableWidget);

    setLayout(layout);
}
void CentralWidget::resizeEvent(QResizeEvent *event)
{
    //Костыль
    //m_plotWidget->setGeometry(15, 15, width() / 2 - 15, height() - 30);
    //m_tableWidget->setGeometry(width() / 2 + 15, 15, width() / 2 - 30, height() - 30);
    qDebug() << m_plotWidget->size();
    qDebug() << m_tableWidget->size();
}
Answer 1
m_plotWidget->setSizePolicy (QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);

Подробности по QSizePolicy смотри в документации.

READ ALSO
Не запускается Debug при использовании QCameraViewfinder

Не запускается Debug при использовании QCameraViewfinder

Господа! Хочу обратить ваше внимание на следующюю проблемуЕсть небольшой код:

166
использование контейнера map

использование контейнера map

как я могу реализовать такую конструкцию ?

152
Не работает if else c++

Не работает if else c++

Если сумма 3 действительных чисел x,y,z <1, то наименьшее из этих чисел заменить полусуммой двух других, в противном случае заменить меньшее...

180
Использование super в interface

Использование super в interface

Java, когда мы наследуем один интерфейс от другого, и в дочернем хотим вызвать метод родительского, то мы должны писать не superметод (как в классах),...

137