Qt菜单栏被抵消

时间:2016-03-09 06:51:41

标签: c++ qt window

我正在使用setContentsMargins在我的标签(中央窗口小部件)和停靠窗口小部件之间添加间距,但它也会偏移菜单栏。

测试用例

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
   MainWindow(QWidget *parent = 0)
    : QMainWindow(parent)
   {
      QMenu* fileMenu = menuBar()->addMenu("File");
      fileMenu->addMenu("menu item");

    QTabWidget* tabs = new QTabWidget();
    tabs->addTab(new QWidget(), "something");

    setCentralWidget(tabs);

    QDockWidget* dw = new QDockWidget("docking", this);
    dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    dw->setWidget(new QTabWidget(dw));
    addDockWidget(Qt::RightDockWidgetArea, dw);
    setContentsMargins(5, 5, 5, 5);
    resize(500, 500);
  }

  ~MainWindow() {}
};

图片

enter image description here

1 个答案:

答案 0 :(得分:1)

我试过这种方式:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    QMenu* fileMenu = menuBar()->addMenu("File");
    fileMenu->addMenu("menu item");


    QWidget* widget = new QWidget(this);
    QHBoxLayout *layout = new QHBoxLayout(widget);

    QTabWidget* tabs = new QTabWidget(widget);
    tabs->addTab(new QWidget(), "something");


    QDockWidget* dw = new QDockWidget("docking", widget);
    dw->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);

    dw->setWidget(new QTabWidget(dw));
    addDockWidget(Qt::RightDockWidgetArea, dw);
    resize(500, 500);

    widget->setLayout(layout);
    layout->addWidget(tabs);
    layout->addWidget(dw);
    layout->setContentsMargins(50, 50, 50, 50);

    setCentralWidget(widget);
}

适用于布局。但是,当您取消停靠窗口小部件时,没有拖放区域。您可以通过双击标题栏来停靠它。我没弄明白如何保持拖放区域。如果有人知道如何实现,我感兴趣。