Страницы

Поиск по вопросам

понедельник, 30 марта 2020 г.

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

#cpp #qt


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

Необходимо, чтобы это работало так:

main.cpp

#include 
#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 

#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 
#include 
#include 
#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 
#include 

#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();
}

    


Ответы

Ответ 1



m_plotWidget->setSizePolicy (QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); Подробности по QSizePolicy смотри в документации.

Комментариев нет:

Отправить комментарий