最近一直在学习QT开发,像C#和Android 等均可以自定义控件,因为很多功能需要自定义控件,不然实现起来很麻烦。QT和其它语言一样,同样可以开发自定义,其原理都是继承,然后实现自己的方法即可。
C#继承自control;
Android继承自View、LinearLayout(线性布局)、TableLayout(表格布局)、FrameLayout(帧布局)、RelativeLayout(相对布局)、GridLayout(网格布局)以及AbsoluteLayout均可。
QT继承Qwidget。
实例如下:
新建一个C++类,名为MyDevice。
MyDevice.h
#ifndef MYDEVICE_H
#define MYDEVICE_H
#include <QWidget>
#include<QPaintEvent>
#include <qpainter.h>
class MyDevice : public QWidget
{
Q_OBJECT
public:
explicit MyDevice(QWidget *parent = 0);
~MyDevice();
signals:
public slots:
protected:
void paintEvent(QPaintEvent *event);
};
#endif // MYDEVICE_H
MyDevice.cpp
#include "MyDevice.h"
MyDevice::MyDevice(QWidget *parent) : QWidget(parent)
{
}
MyDevice::~MyDevice(){
}
void MyDevice::paintEvent(QPaintEvent * event){
QPainter painter(this);
painter.setPen(Qt::red);
painter.drawLine(10,10,100,100);
}
开发好了接下来就是如何使用了。C#和Android开发的自定义控件均可直接拖到界面上,而QT略有区别。我们开发的QT组件是继承自QWidget的,所以我们先在UI界面设计的地方拖入一个QWidget组件,然后把它提升成MyDevice即可。
上面的代码实现了绘制一根红色的斜线,运行效果如下图所示: