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

来源:互联网 发布:python人脸识别闪退 编辑:程序博客网 时间:2024/04/28 19:45


来源:Qt 界面使用自定义控件 "提升为"




1.效果图


我做了一个非常简单的例子,一个可以显示颜色的QLabel,边上有个按钮,点击,跳出颜色选取的Dialog,然后选择一个颜色,这个QLabel会变成什么颜色。


2.ColorLabel 


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

头文件:

[cpp] view plain copy
  1. #ifndef COLORLABEL_H  
  2. #define COLORLABEL_H  
  3.   
  4. #include <QLabel>  
  5. #include <QPainter>  
  6.   
  7. class ColorLabel : public QLabel{  
  8.     Q_OBJECT  
  9. public:  
  10.     explicit ColorLabel(QWidget *parent=0);  
  11.     void setColor(QColor c);  
  12. private:  
  13.     QColor color;  
  14.     QPainter *paint;  
  15.     void paintEvent(QPaintEvent *);  
  16. };  
  17.   
  18.   
  19. #endif // COLORLABEL_H  

实现文件:

[cpp] view plain copy
  1. #include "colorlabel.h"  
  2.   
  3.   
  4. ColorLabel::ColorLabel(QWidget *parent):QLabel(parent), color(Qt::white){  
  5. }  
  6.   
  7. void ColorLabel::paintEvent(QPaintEvent *){  
  8.     paint = new QPainter;  
  9.     paint->begin(this);  
  10.     paint->setBrush(QBrush(color,Qt::SolidPattern));  
  11.     paint->drawRect(0, 0, this->geometry().width(), this->geometry().height());  
  12.     paint->end();  
  13. }  
  14.   
  15. void ColorLabel::setColor(QColor c){  
  16.     color = c;  
  17. }  

3.界面文件里添加ColorLabel

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



输入类名称,就OK了。


我们可以去Qt根据布局文件生成的头文件里面看下,它自己包含了colorlabel.h,把QLabel都改成了ColorLabel。


Qt写起来真是不错。


4.本博文例子下载:

 

http://www.waitingfy.com/?attachment_id=1170



参考:

Qt 界面使用自定义控件






0 0