Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Resize WindowContainer in Dockwidget
Forum Updated to NodeBB v4.3 + New Features

Resize WindowContainer in Dockwidget

Scheduled Pinned Locked Moved Unsolved General and Desktop
3 Posts 2 Posters 575 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • N Offline
    N Offline
    Nertunt
    wrote on last edited by
    #1

    Hey,

    I have a QDockWidget that contains a WindowContainer for a Q3DSurface. My problem is that if I change the size of the dockWidget during runtime, the size of the Q3DSurface stays constant.

    main {
        ....
        QDockWidget *dock = new QDockWidget();
        someParent->addDockWidget(Qt::DockWidgetArea::RightDockWidgetArea, dock);
    }
    

    In the class DataVisualizer:

    DataVisualizer::DataVisualizer(QWidget *parent) : QWidget(parent) {
    
    	this->setContentsMargins(QMargins(0, 20, 0, 0));
    	QtDataVisualization::Q3DSurface graph = new QtDataVisualization::Q3DSurface();
    	QWidget *container = QWidget::createWindowContainer(graph);
    	
    
    	QSize screenSize = graph->screen()->size();
    	container->setMinimumSize(QSize(screenSize.width()/4, screenSize.height() /2));
    	container->setMaximumSize(screenSize);
    
    	QVBoxLayout *hLayout = new QVBoxLayout(this);
    	hLayout->addWidget(container, 0);
    
    }
    

    I hope you have enough information. Thank you for intrest.

    Best regards

    Nertunt

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi,

      What version of Qt are you using ?
      On what platform ?

      Can you provide a complete minimal example showing that behaviour ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • N Offline
        N Offline
        Nertunt
        wrote on last edited by Nertunt
        #3

        Hey,

        I use QT 5.11. with Visual Studio 2017 and Windows 10. Below a minimal working example.

        #include <QtWidgets/QApplication>
        #include "DataVisualizerWidget.hpp"
        
        
        int main(int argc, char *argv[]) {
        	QApplication app(argc, argv);
        	QMainWindow window;
        	
        	QDockWidget *dock = new QDockWidget();
        	DataVisualizerWidget visualizer = new DataVisualizerWidget(dock);
        	window.addDockWidget(Qt::DockWidgetArea::RightDockWidgetArea, dock);
        
        	window.show();
        	return app.exec();
        }
        

        The header file for DataVisualizationWidget:

        #pragma once
        #include <QtWidgets/QWidget>
        
        class QResizeEvent;
        
        class MicroVisualizerWidget : public QWidget {
        	Q_OBJECT
        
        public:
        	DataVisualizerWidget(QWidget *parent);
        };
        

        The source file for DataVisualizationWidget:

        #include "DataVisualizerWidget.hpp"
        
        #include <QVBoxLayout>
        #include <QtGui/QScreen>
        #include <QtDataVisualization\q3dsurface.h>
        
        DataVisualizerWidget::DataVisualizerWidget(QWidget *parent) : QWidget(parent) {
        	
                //definining the widget
        	 QtDataVisualization::Q3DSurface *graph = new QtDataVisualization::Q3DSurface();
        	QWidget *container = QWidget::createWindowContainer(graph);
        	QSize screenSize = graph->screen()->size();
        	container->setMinimumSize(QSize(screenSize.width()/4, screenSize.height()/3));
        	container->setMaximumSize(screenSize);
        	QVBoxLayout *hLayout = new QVBoxLayout(this);
        	hLayout->addWidget(container, 0);
        
                // Setting the values for graph
        	QtDataVisualization::QSurfaceDataArray *data = new QtDataVisualization::QSurfaceDataArray;
        	QtDataVisualization::QSurfaceDataRow *dataRow1 = new QtDataVisualization::QSurfaceDataRow;
        	QtDataVisualization::QSurfaceDataRow *dataRow2 = new QtDataVisualization::QSurfaceDataRow;
        	
        	*dataRow1 << QVector3D(0.0f, 0.1f, 0.5f) << QVector3D(1.0f, 0.5f, 0.5f);
        	*dataRow2 << QVector3D(0.0f, 1.8f, 1.0f) << QVector3D(1.0f, 1.2f, 1.0f);
        	*data << dataRow1 << dataRow2;
        
        	QtDataVisualization::QSurface3DSeries *series = new QtDataVisualization::QSurface3DSeries;
        	series->dataProxy()->resetArray(data);
        	graph->addSeries(series);
        }
        

        I hope this helps. Thank you.

        Nertunt

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved