无法使用 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中打开,问题就解决了
我开始为一个项目学习 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中打开,问题就解决了