Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt Creator-UI类的自定义命名空间_C++_Qt_Qt Creator - Fatal编程技术网

C++ Qt Creator-UI类的自定义命名空间

C++ Qt Creator-UI类的自定义命名空间,c++,qt,qt-creator,C++,Qt,Qt Creator,我希望在自己的命名空间中有一个UI类,如ProjectName::MainWindow。请问,在Qt Creator中有什么方便的方法来实现这一点吗 我可以打开mainwindow.ui文件,并将“mainwindow”更改为“ProjectName::mainwindow”,它可以编译并工作。但当我在UI设计器中更改某些内容时,会再次生成UI文件。。。使用错误的类名。创建新的设计器窗体类时,请使用命名空间指定类名,例如ProjectName::MainWindow。Qt Creator将自动生

我希望在自己的命名空间中有一个UI类,如ProjectName::MainWindow。请问,在Qt Creator中有什么方便的方法来实现这一点吗


我可以打开mainwindow.ui文件,并将“mainwindow”更改为“ProjectName::mainwindow”,它可以编译并工作。但当我在UI设计器中更改某些内容时,会再次生成UI文件。。。使用错误的类名。

创建新的设计器窗体类时,请使用命名空间指定类名,例如
ProjectName::MainWindow
。Qt Creator将自动生成以下代码

main window.h

namespace ProjectName {
  namespace Ui {
    class MainWindow;
  }
  class MainWindow : public QWidget {
    Q_OBJECT    
  public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();    
  private:
    Ui::MainWindow *ui;
  };
} // namespace ProjectName
main window.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>ProjectName::MainWindow</class>
 <widget class="QWidget" name="ProjectName::MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
 </widget>
 <resources/>
 <connections/>
</ui>

项目名称::主窗口
0
0
400
300
形式

如您所见,
MainWindow
Ui::MainWindow
现在都在
ProjectName
命名空间中。

您是在谈论自己的表单类(默认情况下它在默认命名空间中,其源在项目中)还是Qt生成的Ui类(默认情况下,它位于
Ui
命名空间中,其声明存储在Qt生成的
Ui_ClassName.h
文件中)?我自己的。但是生成的类也应该在propper命名空间中。Id est:ProjectName::MainWindow用于我自己的,ProjectName::Ui用于生成的。此外,您甚至不需要编辑XML文档。您只需编辑QTDesigner中的name属性答案中的技巧(Qt creator 2.7.0)仅在添加类时有效,而在创建项目时无效-向导抱怨类名中的字符无效。这让我感到困惑…在QtDesigner中编辑属性也有效。非常感谢!