• 7386阅读
  • 0回复

底层Label图层 和前端 QWidget的图片显示问题 [复制链接]

上一主题 下一主题
离线keepcleargas
 
只看楼主 倒序阅读 楼主  发表于: 2010-09-12
组件一chessboard:
  1. class chessBoard:public QWidget{
  2. Q_OBJECTprivate:
  3.  int board[17][17];
  4.  chess* cBoard[17][17];
  5. chess* chesses[6];
  6.  int peoples; QLabel *boardIcon;  //用于画 背景图片
  7. public: chessBoard(QMainWindow *parent); /*这里的 QMainWindow 是mainwindwo的父类 只需再次将其设为父类即可,即可用于挂载 chessboard类了*/ ~chessBoard(); void setChess(vector<player>);
  8.  bool isWin(chess c); void init(int num);
  9.  int getNum(); void newGame();
  10.  void setBackGround();
  11. void setPlayerInfo();};


然后
chessBoard 中的设置背景代码如下:
  1. void chessBoard::setBackGround(){
  2.  boardIcon=new QLabel(this);
  3.  boardIcon->setPixmap(QPixmap(":/sources/board.png"));
  4. boardIcon->move(0,0); boardIcon->show();
  5.  boardIcon->setAttribute(Qt::WA_DeleteOnClose);}


然后我在chessBoard中调用chess的draw 函数 如下: (其中的chessIcon在 chess中已经声明为 QLabel)
  1. void chess::draw(){ chessIcon=new QLabel(this);
  2. switch(this->c.getColor()){
  3. case 1: chessIcon->alignment();
  4. chessIcon->setPixmap(QPixmap(":/sources/red.png"));
  5.  chessIcon->move(50,15);
  6. chessIcon->show();
  7. chessIcon->setAttribute(Qt::WA_DeleteOnClose);
  8.  break;
  9. case 4: chessIcon->setPixmap(QPixmap(":/soureces/green.png"));
  10. chessIcon->move(0,0); chessIcon->show();
  11.  chessIcon->setAttribute(Qt::WA_DeleteOnClose);
  12. break;
  13. default: break; }}

说白了 ,就是 棋在棋盘中,画棋子时 ,棋子 总是被棋盘覆盖!

如何在 chessboard上的Label 图片 成为底层,chess 在画label的时候能在顶层显示!!
快速回复
限100 字节
 
上一个 下一个