为什么我的工具栏停靠在错误的位置?

时间:2018-11-08 14:07:27

标签: c++ qt qgraphicsscene qmainwindow qtoolbar

我有一个奇怪的情况。我创建一个嵌入在QGraphicsScene中的QMainWindow。我想拥有多个QMainWindows,每个QMainWindows在场景中都有一个工具栏。我正在模拟MDI区域,而不使用QMdiArea类。

这是MainWindow.cpp

#include "mainwindow.h"


MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){
    resize(1000, 750);
    qApp->setStyle(QStyleFactory::create("Fusion"));

    QGraphicsView* view = new QGraphicsView;
    QGraphicsScene* scene = new QGraphicsScene;
    view->setFixedSize(1000, 750);
    view->setScene(scene);
    view->scene()->setSceneRect(-150, -150, view->size().width(), view->size().height());

    setCentralWidget(view);

    QWidget* widget = new QWidget;
    widget->resize(300, 300);
    QVBoxLayout* vLay = new QVBoxLayout;

    widget->setLayout(vLay);

    QMainWindow* testWindow = new QMainWindow;
    testWindow->resize(300, 300);

    QToolBar* toolbar = new QToolBar;
    toolbar->setFloatable(false);
    toolbar->setStyleSheet("border: 1px solid red"); //For better seeing the issue
    toolbar->addAction("Test");

    testWindow->addToolBar(toolbar);
    vLay->addWidget(testWindow);

    scene->addWidget(widget);
}

会发生什么情况,QToolBar将在嵌入式QMainWindow上的正确位置生成,但是当将其移动并停靠在任何位置时,它将向上和向左移动太远。我添加了大纲工具代码以概述工具栏,以便您可以看到工具栏框。

这是MainWindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QToolBar>
#include <QVBoxLayout>

class MainWindow : public QMainWindow{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);

};

#endif // MAINWINDOW_H

为什么工具栏会产生怪异的捕捉效果?我故意将QMainWindow添加到QWidget中,因为这是我正在做的事情所需要的。我意识到仅嵌入QMainWindow具有所需的交互作用,但是我需要将其嵌入QWidget中。我也意识到没有父母对内存管理不利,但我也能解决。

我使用的是Qt版本5.10.1,并且使用Redhat作为操作系统。

0 个答案:

没有答案