首页 > 解决方案 > qdockwidget 不低于 qmenubar

问题描述

我将这个 Qt 绑定用于 Go https://github.com/therecipe/qt,但QDockWidgetQMenuWidget.

我已经用 QT 创建器创建了主窗口,它吐出一个mainwindow.ui文件(见下文)。

现在我想动态地将停靠小部件添加到窗口,但是,这样做时,左侧泊坞窗与菜单栏处于同一级别,这意味着它将菜单栏向右移动。我希望将泊坞窗放在静态栏下方。

在此处输入图像描述

在图像中,“Left Dock Widget”应位于菜单栏下方

以下是设置所有内容的相关代码:

ui.go

func LoadFormToWidget(fileName string) *widgets.QWidget {
    file := utils.OpenQFile(fileName)
    widget := uitools.NewQUiLoader(nil).Load(file, nil)
    file.Close()

    return widget
}

base.go

func SetupUI() {
    mainWindowWidget := ui.LoadFormToWidget("src/ui/mainwindow.ui")

    mainWindow := widgets.NewQMainWindow(nil, 0)
    mainWindow.SetCentralWidget(mainWindowWidget)

    createDocker(mainWindow)
    setupDockingCorners(mainWindow)

    mainWindow.ShowMaximized()
}

func createDocker(mainWindow *widgets.QMainWindow) {
    leftDocker := createLeftDocker()
    mainWindow.AddDockWidget(core.Qt__LeftDockWidgetArea, leftDocker)
}

func createLeftDocker() *widgets.QDockWidget {
    leftDockWidget := widgets.NewQDockWidget("Left Dock Widget", nil, 0)
    leftDockWidget.SetAllowedAreas(core.Qt__LeftDockWidgetArea)
    leftDockWidget.SetFloating(true)
    leftDockWidget.SetWidget(widgets.NewQPushButton2("PushButton", nil))
    return leftDockWidget
}

主窗口.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1025</width>
    <height>596</height>
   </rect>
  </property>
  <property name="sizePolicy">
   <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
    <horstretch>0</horstretch>
    <verstretch>0</verstretch>
   </sizepolicy>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <property name="autoFillBackground">
   <bool>false</bool>
  </property>
  <property name="documentMode">
   <bool>true</bool>
  </property>
  <property name="dockNestingEnabled">
   <bool>true</bool>
  </property>
  <widget class="QWidget" name="centralwidget"/>
  <widget class="QMenuBar" name="menubar">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>1025</width>
     <height>23</height>
    </rect>
   </property>
   <property name="sizePolicy">
    <sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
     <horstretch>0</horstretch>
     <verstretch>0</verstretch>
    </sizepolicy>
   </property>
   <widget class="QMenu" name="menuFile">
    <property name="title">
     <string>File</string>
    </property>
    <addaction name="actionSettings"/>
    <addaction name="separator"/>
    <addaction name="actionQuit"/>
   </widget>
   <addaction name="menuFile"/>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
  <action name="actionSettings">
   <property name="text">
    <string>Settings</string>
   </property>
  </action>
  <action name="actionQuit">
   <property name="text">
    <string>Quit</string>
   </property>
  </action>
 </widget>
 <resources/>
 <connections/>
</ui>

标签: goqt5

解决方案


推荐阅读