#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 смотри в документации.
Комментариев нет:
Отправить комментарий