Я создаю виджет-док в графическом интерфейсе qt и добавляю к нему виджет таблицы дерева.Более того, в главном меню у меня есть другие объекты, такие как QGraphicsView
.Во время выполнения, когда я вручную изменяю ширину дока, он толкает или тянет главное окно со своими объектами и работает хорошо.когда я изменяю размер док в коде, док и его объекты перекрываются с объектами главного окна.Как я могу это исправить?спасибо за ваше внимание.
в заголовочном файле:
#include <QtWidgets/QMainWindow>
#include "ui_QtGuiApplication.h"
#include <QtWidgets/QDockWidget>
#include <QtWidgets/QTreeWidget>
#include <QGraphicsView>
#include <QtWidgets/QPushButton>
class QtGuiApplication : public QMainWindow
{
Q_OBJECT
public:
QtGuiApplication(QWidget *parent = Q_NULLPTR);
private:
Ui::QtGuiApplicationClass ui;
QDockWidget *dockWidget;
QWidget *dockWidgetContents;
QTreeWidget *treeWidget;
QGraphicsView* qGraph;
QGraphicsScene* scene;
private slots:
void worker_fn();
};
в исходном файле:
#include "QtGuiApplication.h"
QtGuiApplication::QtGuiApplication(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
/// creat dock
dockWidget = new QDockWidget(this);
dockWidgetContents = new QWidget();
dockWidget->setMinimumSize(QSize(50, 38));
dockWidget->setWidget(dockWidgetContents);
this->addDockWidget(static_cast<Qt::DockWidgetArea>(1), dockWidget);
//// add tree table widget to dock
treeWidget = new QTreeWidget(dockWidgetContents);
//// creat an object in main window
qGraph = new QGraphicsView(ui.centralWidget);
qGraph->setGeometry(QRect(70, 30, 300, 300));
scene = new QGraphicsScene(qGraph);
scene->setSceneRect(0, 0, 300, 300);
qGraph->setScene(scene);
qGraph->show();
//////// creat push button to resize the dock
QPushButton* btn_Ok = new QPushButton(ui.centralWidget);
btn_Ok->setGeometry(QRect(340, 340, 75, 23));
btn_Ok->setText("Ok");
connect(btn_Ok, SIGNAL(clicked()), this, SLOT(worker_fn()));
}
void QtGuiApplication::worker_fn()
{
QRect rect = dockWidget->geometry();
dockWidget->resize(300, rect.height());
}