日期:2014-05-16  浏览次数:20693 次

新手请教Qt下自定义类的使用问题?
各位老大,本人初学Qt下linux软件开发,现在被碰到的一个问题难住了,请大家指点阿。问题是这样的:
我在Qt的Designer中创建了一个窗口(MainForm),在窗口中插入一个QLabel(m_label)标签。因为想要在标签中实现部分自定义的绘图功能,于是自定义了一个基类为QLabel
的新类MyLabelEx(相关文件为MyLabelEx.h和MyLabelEx.cpp)。然后修改Qt工程中的MainForm.UI文件,把其中定义m_label那段中的class=QLabel改为class=MyLabelEx。make此工程时提示MyLabelEx未定义,于是在MainForm.h文件(这个文件是在qmake、make过程中由Qt自动生成的)中添加#include “MyLabelEx.h”,再次make时可以通过,程序运行正常。但是当修改部分程序,重新执行qmake –project、qmake、make过程后,MainForm.h又回到了原来的状态,#include “MyLabelEx.h”消失了。
请教各位DX,这个问题该如何解决阿????


------解决方案--------------------
比如, 你的UI文件为MainForm.ui
你通过命令"uic MainForm.ui > MainForm.h" 生成界面的头文件MainForm.h
例如.h文件定义的是一个窗口和它上面的基本元素, 这些都是不需要变更的元素, 该窗口类名为class MyMainForm : public QWidget

你自己写一个类在MyForm.h中:
class MyForm : public MyMainForm

然后在这个MyForm类里面添加这个基本界面上你需要添加的元素或者变更的元素, 实现基本窗口的重用. 这种设计在手机界面的开发中常见.