Qt 界面使用自己定义控件 "提升为"

时间:2023-03-09 02:18:34
Qt 界面使用自己定义控件 "提升为"

1.效果图

Qt 界面使用自己定义控件 "提升为"

我做了一个很easy的样例,一个能够显示颜色的QLabel,边上有个button,点击,跳出颜色选取的Dialog,然后选择一个颜色。这个QLabel会变成什么颜色。

2.ColorLabel

我们先把这个自己定义的类写好:

头文件:

#ifndef COLORLABEL_H
#define COLORLABEL_H #include <QLabel>
#include <QPainter> class ColorLabel : public QLabel{
Q_OBJECT
public:
explicit ColorLabel(QWidget *parent=0);
void setColor(QColor c);
private:
QColor color;
QPainter *paint;
void paintEvent(QPaintEvent *);
}; #endif // COLORLABEL_H

实现文件:

#include "colorlabel.h"

ColorLabel::ColorLabel(QWidget *parent):QLabel(parent), color(Qt::white){
} void ColorLabel::paintEvent(QPaintEvent *){
paint = new QPainter;
paint->begin(this);
paint->setBrush(QBrush(color,Qt::SolidPattern));
paint->drawRect(0, 0, this->geometry().width(), this->geometry().height());
paint->end();
} void ColorLabel::setColor(QColor c){
color = c;
}

3.界面文件中加入ColorLabel

Qt 界面使用自己定义控件 &quot;提升为&quot;

拖一个普通的QLabel到界面文件中。然后右击这个控件,选择提升为。

Qt 界面使用自己定义控件 &quot;提升为&quot;

输入类名称,就OK了。

我们能够去Qt依据布局文件生成的头文件中面看下,它自己包括了colorlabel.h,把QLabel都改成了ColorLabel。

Qt 界面使用自己定义控件 &quot;提升为&quot;

Qt写起来真是不错。

4.本博文样例下载:

attachment_id=1170" target="_blank">http://www.waitingfy.com/?

attachment_id=1170

attachment_id=1170" target="_blank">

參考:

Qt 界面使用自己定义控件