2

当我启动我的应用程序时,我在 Qt Designer 中选择了错误的模板。

我做了文件->新建->小部件。

现在我需要一个菜单​​。所以,我想我需要主窗口模板。

我可以无缝更改模板,还是必须创建新表格并将所有内容添加到上面?

4

2 回答 2

4

需要使用主窗口模板创建新的 ui 表单并将小部件内容复制到其中,因为主窗口具有中心小部件,如果我们不指定它,这会导致子元素消失,如上所述。

如果您在 .ui 中编辑 XML,那么更改QWidgetQMainWindow是不够的。首先需要添加:

  <widget class="QWidget" name="centralwidget">

所有小部件或布局之前的元素,紧随其后

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

元素(顺序可能不同)。并添加对应的标签</widget>来关闭中央小部件元素 - 在主小部件的关闭元素之前</widget>(之前<customwidgets><resources>)。这对我有用。

于 2016-03-30T06:47:50.290 回答
2

我在两个文件中进行了三行编辑,才将QWidget模板更改为QMainWindow.

刚才在 Qt 4.8.4 中,我做了以下事情:

我在 Qt Creator 之外打开了 ui 文件(在 Qt Creator 中关闭它之后),我在文件中编辑了一行:

编辑:备份您正在处理的内容,因为编辑 ui 文件有点不合时宜,并且可能会产生奇怪的、未定义的影响。

小部件.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QMainWindow" name="Widget"> <!-- This is the line I edited...
 "QMainWindow" was "QWidget".-->
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

小部件.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QMainWindow>// Edited this line, too

namespace Ui {
class Widget;
}

class Widget : public QMainWindow // Edited this line.
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

最终结果:现在 Qt Creator/Designer 允许我添加工具栏、菜单栏、状态栏等,只需右键单击现在 QMainWindow 的空白区域。

希望有帮助。

于 2013-06-03T23:41:27.367 回答