Qt自定义窗口部件

**一、单一继承方式: **</span>

即将ui作为类的成员变量使用。优点是,能够控制用户界面的外观和显示方式,并能够与用户交互;同事还允许使用同样的ui文件生成多个不同的自定义界面类。
* vs新建qt4guiclass >
![](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2013/12/wpid-0e5624ce374057bbf3c8d3d58ed13d0c_41518324.png)
  • 填写合适的基类和名字
     

 

![](http://codeplanet-wordpress.stor.sinaapp.com/uploads/2013/12/wpid-0e5624ce374057bbf3c8d3d58ed13d0c_41636604.png)
  • 生成之后会产生一个.h文件和一个.cpp文件
    </div>

    //.h file
    #**ifndef** RIGISTER2D_H #**define** RIGISTER2D_H #**include** <QDockWidget> #**include** "ui_rigister2d.h" **class** Rigister2d : **public** QDockWidget,Ui_Rigister2d { Q_OBJECT **public**: Rigister2d(QWidget *parent = 0); ~Rigister2d(); **private**: Ui::Rigister2d ui; }; #**endif** // RIGISTER2D_H

    </div>

    //.cpp file
    #**include** "rigister2d.h" Rigister2d::Rigister2d(QWidget *parent) : QDockWidget(parent) { ui.setupUi(**this**); } Rigister2d::~Rigister2d() { }

    </div>




  • 主程序使用时,声明一个对象,然后show()就可以了
    </div>
    </div>
    </div>

    Rigister2d rig; reg.show();

    </div>


    **二、多继承方式:**

    </div>
    多继承方式中,需要从标准QWidget类和Qt设计器绘制的界面继承。

    </div>
    多继承比单一继承方式简单直接,更具扩展性。

  • 前面类似

  • 修改源文件及头文件
    </div>

    //.h file
    #**ifndef** RIGISTER2D_H #**define** RIGISTER2D_H #**include** <QDockWidget> #**include** "ui_rigister2d.h" **class** Rigister2d : **public** QDockWidget,Ui_Rigister2d { Q_OBJECT **public**: Rigister2d(QWidget *parent = 0); ~Rigister2d(); }; #**endif** // RIGISTER2D_H

    </div>

    </div>

    </div>

    //.cpp file
    #**include** "rigister2d.h" Rigister2d::Rigister2d(QWidget *parent) : QDockWidget(parent) { setupUi(**this**); } Rigister2d::~Rigister2d() { }

    </div>

    </div>

  • 主程序使用时与单一继承一致
     

    [来自为知笔记(Wiz)](http://www.wiz.cn/i/c09d0bb5 "来自为知笔记(Wiz)")
坚持原创技术分享,您的支持将鼓励我继续创作!