📄 hall.cpp
字号:
#include "stdio.h"#include "hall.h"Hall::Hall(QWidget *parent , char *name) :QWidget(parent , name) { mHallMaster=new HallMaster(this, 0); mLoginButton =new QPushButton(this , 0 ); mQuitButton=new QPushButton(this , 0 ) ; mWhiteButton=new QPushButton(this, 0 ); mBlackButton=new QPushButton(this, 0 ); mPlayerListView=new QListView(this); mDeskListView = new QListView(this); mPlayerInfoLabel= new QLabel ( this, 0, 0 ); mDeskInfoLabel= new QLabel ( this, 0, 0 ); mMyIDLabel=new QLabel ( this, 0, 0 ); mMyDeskLabel=new QLabel ( this, 0, 0 ); mAddrLineEdit=new QLineEdit( this, 0 ); mAddrLabel= new QLabel (QString ("Set Server IP:"), this, 0, 0); mAddrInfoLabel=new QLabel (QString ("Current Server IP:"), this, 0, 0); mMain=new Main(0,0); mPlayerInfoLabel->setGeometry(10,20,200,30); mDeskInfoLabel->setGeometry(250,20,200,30); mMyIDLabel->setGeometry(10,10,170,40); mMyDeskLabel->setGeometry(250,10,200,40); mPlayerListView->setGeometry(10,60,200,320); mDeskListView->setGeometry(250,60,200,320); mLoginButton->setGeometry(10,390,100,30); mQuitButton->setGeometry(110,390,100,30); mWhiteButton->setGeometry(250,390,100,30); mBlackButton->setGeometry(350,390,100,30); mAddrLineEdit->setGeometry(110,440,100,20); mAddrLabel->setGeometry(10,440,100,20); mAddrInfoLabel->setGeometry(10,460,200,20); mLoginButton->setText("Login"); mQuitButton->setText("Quit"); mWhiteButton->setText("White"); mBlackButton->setText("Black"); //setBackgroundPixmap(QPixmap("chessboard6_xmp")); mPlayerInfoLabel->setText(QString("Players:")); mDeskInfoLabel->setText(QString("Desks:")); mMyIDLabel->setText(QString("Your ID:")); mMyDeskLabel->setText(QString("Your desk num:")); mPlayerInfoLabel->setFont( QFont( "Helvetica", 14 ) ); mDeskInfoLabel->setFont( QFont( "Helvetica", 14 ) ); mMyIDLabel->setFont( QFont( "Helvetica", 16 ) ); mMyDeskLabel->setFont( QFont( "Helvetica", 16 ) ); setMaximumSize(QSize(500,490)); setMinimumSize(QSize(500,490)); mPlayerListView->addColumn( "PlayerID" ); //mPlayerListView->addColumn( "State" ); //mPlayerListView->addColumn( "OpID" ); mPlayerListView->setAllColumnsShowFocus( TRUE ); mPlayerListView->setSelectionMode( QListView::Single ); mDeskListView->addColumn( "TableNum" ); mDeskListView->addColumn( "WhiteID" ); mDeskListView->addColumn( "BlackID" ); mDeskListView->setAllColumnsShowFocus( TRUE ); mDeskListView->setSelectionMode( QListView::Single ); connect( mLoginButton, SIGNAL(clicked()), this, SLOT(sLogin()) ); connect( mQuitButton, SIGNAL(clicked()), mHallMaster, SLOT(sonquit()) ); connect( mWhiteButton, SIGNAL(clicked()), this, SLOT(sSitdownWhite()) ); connect( mBlackButton, SIGNAL(clicked()), this, SLOT(sSitdownBlack()) ); connect( mMain, SIGNAL(sendmsgtohall(Message )), mHallMaster, SLOT(sdisposemsg(Message))); connect( mHallMaster, SIGNAL(sendmsgtomain(Message)), mMain, SLOT(sdisposemsg(Message))); connect( this, SIGNAL(sendmsgtohallmstr(Message)), mHallMaster, SLOT(sdisposemsg(Message))); connect( mHallMaster, SIGNAL(updatehall()), this, SLOT(sUpDateHall())); connect( mHallMaster, SIGNAL(showgameface()), this, SLOT(sShowMain())); connect( mHallMaster, SIGNAL(quithall()), qApp, SLOT(quit()) ); connect( mAddrLineEdit, SIGNAL(returnPressed()), this, SLOT(sSetServeraddr()) ); }void Hall::sLogin(){ mHallMaster->Runner(); }//界面"White"按钮被按下时驱动本函数void Hall:: sSitdownWhite(){ //找到桌号 if(mDeskListView->selectedItem ()==0) return; QListViewItem * item=mDeskListView->selectedItem (); //调用HallMaster发送Sitdown()请求 Message msg; msg.mRequest=QString("hallsitdown"); msg.mContent=item->text(0); msg.mContent2=QString("white"); emit sendmsgtohallmstr(msg);}//界面"Black"按钮被按下时驱动本函数void Hall:: sSitdownBlack(){ //找到桌号 if(mDeskListView->selectedItem ()==0) return; QListViewItem * item=mDeskListView->selectedItem (); //调用HallMaster发送Sitdown()请求 Message msg; msg.mRequest=QString("hallsitdown"); msg.mContent=item->text(0); msg.mContent2=QString("black"); emit sendmsgtohallmstr(msg); }//显示mMainvoid Hall::sShowMain(){ mMain->show();}void Hall::sSetServeraddr(){ QString addr=mAddrLineEdit->text(); Message msg; msg.mRequest="hallsetserveraddr"; msg.mContent=addr; emit sendmsgtohallmstr( msg ); mAddrInfoLabel->setText(QString("Current Server IP: ")+addr); mAddrLineEdit->clear();}//QListView的更新比较特殊,单独用一个函数来加条目void Hall::AddPlayerListItem(int i){ QListViewItem *item ; item = new QListViewItem( mPlayerListView ); item->setText( 0, mHallMaster->getPlayerID(i) ); item->setText( 1, mHallMaster->getPlayerDesknumber(i)); mPlayerListView->insertItem ( item );}void Hall::AddDeskTableItem(int i){ //转换i为QString char tempt[10]; sprintf(tempt,"%d",i); QString num=QString(tempt); //添加条目,直接访问到HallMaster 的DeskTable成员 QListViewItem *item ; item = new QListViewItem( mDeskListView ); item->setText( 0, num ); QString id=mHallMaster->getDeskWhiteside(i); if(id.compare("-1")!=0&&id.compare("0")!=0) item->setText( 1, id ); id=mHallMaster->getDeskBlackside(i); if(id.compare("-1")!=0&&id.compare("0")!=0) item->setText( 2, id ); mDeskListView->insertItem ( item ); }void Hall::sUpDateHall(){ int i=1; QString id; printf("Hall:: updateHall\n"); mPlayerListView->clear(); //逐条更新playertable while(i<MAX_PLAYER) { if(mHallMaster->getPlayerID(i).compare("-1")!=0) AddPlayerListItem(i); i++; } //更新桌位信息 mDeskListView->clear(); i=1; while(i<MAX_DESK) { AddDeskTableItem(i); i++; } //更新id信息 mMyIDLabel->setText(QString("Your ID:")+mHallMaster->getMyID()); mMyDeskLabel->setText(QString("Your desk num:")+mHallMaster->getMyDesknumber());}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -