Qt QLabel 变颜色小例子

// 重载QLabel // diamond.h #pragma once #include <QtGui> class diamond : QLabel { Q_OBJECT public: diamond(); ~diamond(); private: void mousePressEvent ( QMouseEvent * event ); // 重载mousePressEvent函数 private: void changeColor(bool b_c); void changeState(); private: bool b_mChecked; }; 

// diamond.cpp #include "diamond.h" diamond::diamond() :b_mChecked(false) { setStyleSheet("background-color:yellow"); setFixedSize(40,40); } diamond::~diamond() { } void diamond::mousePressEvent( QMouseEvent * event ) { // 改变选择状态 changeState(); // 改变图标颜色 changeColor(b_mChecked); } void diamond::changeColor(bool b_c) { if(b_c) setStyleSheet("background-color:red"); // 设置QLabel背景的颜色 else setStyleSheet("background-color:yellow"); } void diamond::changeState() { b_mChecked = !b_mChecked; }

 

// magic.h #ifndef MAGIC_H #define MAGIC_H #include <QtGui> class diamond; class magic : public QDialog { Q_OBJECT public: magic(QWidget *parent = 0, Qt::WFlags flags = 0); ~magic(); private: void initDiamonds(); QLabel* createDiamond(); private: QGridLayout* g_lay; }; #endif // MAGIC_H

// magic.cpp #include "magic.h" #include "diamond.h" magic::magic(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags) { g_lay = new QGridLayout; setLayout(g_lay); resize(400,400); initDiamonds(); } magic::~magic() { } void magic::initDiamonds() { // 循环添加多个QLabel for(int i = 0; i<10; i++) { for(int j=0; j<10; j++) { g_lay->addWidget(createDiamond(),i,j); } } } QLabel* magic::createDiamond() { diamond* d = new diamond; return (QLabel*)(d); }

你可能感兴趣的:(c,qt)