无法使用 Qt Designer 和 Clion 将小部件添加到 QMainWindow

Cannot add Widgets to QMainWindow using Qt Designer and Clion

我开始为一个项目学习 Qt,我想使用 CLion 来完成它。话说我是按照官方教程在CLion上配置Qt的:

https://www.jetbrains.com/help/clion/qt-tutorial.html

我将 Qt Designer 和 Creator 都设置为外部工具,因此我可以编辑 .ui 文件。 然后我创建了一个 Qt Widgets 可执行项目和一个继承 QMainWindow 的 Qt UI Class(CLion 帮助自动创建项目和 class)。 问题是当我在 Qt Designer 中打开我的 .ui 文件时,它不允许我添加或编辑小部件。我也在Qt Creator中试过,也遇到了同样的问题。

如下图所示,Main Window 应该有网格,但实际上没有。

如果我创建一个继承自 QWidget 的 Qt UI Class,我就可以编辑小部件。

我尝试直接在 Qt Creator 中创建一个新项目,它在那里运行良好。

Qt 版本:6 | CLion 版本:2021.1.2 | OS:Ubuntu 20.04.2 LTS

没有centralWidget

添加;

   <widget class="QWidget" name="centralwidget">
    <property name="sizePolicy">
     <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
      <horstretch>0</horstretch>
      <verstretch>0</verstretch>
     </sizepolicy>
    </property>
   </widget>

右下左右;

  <property name="windowTitle">
   <string>MainWindow</string>
  </property>

这应该可以解决问题。 通常它应该自动生成,但某些原因 clion 没有这样做,顺便说一句,意图可能被破坏了。

我在 CLion 中遇到了同样的问题。当我们检查“.ui”文件时,我们意识到这是因为没有“中央小部件”。我们找到了解决方法,但仍无法获得最终解决方案的结果。

解决方法:

右键单击“.ui”文件并将其标记为“标记为纯文本”。然后打开文件。它应该是这样的 XML 格式;

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
    <author/>
    <comment/>
    <exportmacro/>
    <class>MainWindow</class>
    <widget class="QMainWindow" name="MainWindow">
        <property name="geometry">
            <rect>
                <x>0</x>
                <y>0</y>
                <width>400</width>
                <height>300</height>
            </rect>
        </property>
        <property name="windowTitle">
            <string>MainWindow</string>
        </property>
    </widget>
    <pixmapfunction/>
    <connections/>
</ui>

在 QMainWindow 下面添加这个 Central 小部件代码:

    <widget class="QWidget" name="centralwidget">
        <property name="sizePolicy">
            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                <horstretch>0</horstretch>
                <verstretch>0</verstretch>
            </sizepolicy>
        </property>
    </widget>

它应该是这样的;

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
    <author/>
    <comment/>
    <exportmacro/>
    <class>MainWindow</class>
    <widget class="QMainWindow" name="MainWindow">
        <property name="geometry">
            <rect>
                <x>0</x>
                <y>0</y>
                <width>400</width>
                <height>300</height>
            </rect>
        </property>
        <property name="windowTitle">
            <string>MainWindow</string>
        </property>
    
    <widget class="QWidget" name="centralwidget">
        <property name="sizePolicy">
            <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                <horstretch>0</horstretch>
                <verstretch>0</verstretch>
            </sizepolicy>
        </property>
    </widget>

    </widget>
    <pixmapfunction/>
    <connections/>
</ui>

现在用Qt Designer在External Tools中打开,问题就解决了