组件一chessboard:
- class chessBoard:public QWidget{
- Q_OBJECTprivate:
- int board[17][17];
- chess* cBoard[17][17];
- chess* chesses[6];
- int peoples; QLabel *boardIcon; //用于画 背景图片
- public: chessBoard(QMainWindow *parent); /*这里的 QMainWindow 是mainwindwo的父类 只需再次将其设为父类即可,即可用于挂载 chessboard类了*/ ~chessBoard(); void setChess(vector<player>);
- bool isWin(chess c); void init(int num);
- int getNum(); void newGame();
- void setBackGround();
- void setPlayerInfo();};
然后
chessBoard 中的设置背景代码如下:
- void chessBoard::setBackGround(){
- boardIcon=new QLabel(this);
- boardIcon->setPixmap(QPixmap(":/sources/board.png"));
- boardIcon->move(0,0); boardIcon->show();
- boardIcon->setAttribute(Qt::WA_DeleteOnClose);}
然后我在chessBoard中调用chess的draw 函数 如下: (其中的chessIcon在 chess中已经声明为
QLabel)
- void chess::draw(){ chessIcon=new QLabel(this);
- switch(this->c.getColor()){
- case 1: chessIcon->alignment();
- chessIcon->setPixmap(QPixmap(":/sources/red.png"));
- chessIcon->move(50,15);
- chessIcon->show();
- chessIcon->setAttribute(Qt::WA_DeleteOnClose);
- break;
- case 4: chessIcon->setPixmap(QPixmap(":/soureces/green.png"));
- chessIcon->move(0,0); chessIcon->show();
- chessIcon->setAttribute(Qt::WA_DeleteOnClose);
- break;
- default: break; }}
说白了 ,就是 棋在棋盘中,画棋子时 ,棋子 总是被棋盘覆盖!
如何在 chessboard上的Label
图片 成为底层,chess 在画label的时候能在顶层显示!!