csdn源码压缩包下载地址 http://download.csdn.net/detail/ziyuewuneng/6274387
2 cd dir 创建文件 cc/cpp
3 qmake -project 生成工程文件.pro
4 qmake 生成makefile
5 make
6 默认生成与目录同名的可执行文件!
禁用所有,随机启用一个!
增加新功能:
1,自动跳出! 周期(计时):
QTimer:
2,计数! 显示数!QLabel/QLCDNumber
3,开始,暂停,重新开始,退出!
mywindow.cc
每一个qt程序都是一个文件夹!(即都必须创建一个目录)
1 mkdir dir2 cd dir 创建文件 cc/cpp
3 qmake -project 生成工程文件.pro
4 qmake 生成makefile
5 make
6 默认生成与目录同名的可执行文件!
7 ./执行,查看结果!
游戏打地鼠:布局,button,信号与槽,计时,分数
当按下其中一个!另外一个弹起来!禁用所有,随机启用一个!
增加新功能:
1,自动跳出! 周期(计时):
QTimer:
2,计数! 显示数!QLabel/QLCDNumber
3,开始,暂停,重新开始,退出!
main.cc
#include <QApplication>
//#include <QWidget>
#include"mywindow.h"
int main(int argc,char **argv)
{
QApplication app(argc,argv);
// QWidget tt;
mywindow tt;
tt.show();
app.exec();
return 0;
}
mywindow.h
#include<QWidget>
#include <QLabel>
#include <QLCDNumber>
#include<QPushButton>
#include<QHBoxLayout>
#include<QVBoxLayout>
#include <QTimer>
#include <QMessageBox>
class mywindow:public QWidget
{
Q_OBJECT
public:
mywindow();
public slots:
void myslot();
void mytimer(void);
void myclick_timer(void);
void myslot_start(void);
void myslot_restart(void);
private:
void mydisableall(void);
QTimer *timer;
QTimer *click_timer;
int count;//计时
int num;//bingo
int score;
bool st;
QPushButton *button_1[4];
QPushButton *button[4*6];
QLabel *label_1;
QLabel *label_2;
QLCDNumber *lcd1;
QLCDNumber *lcd2;
QHBoxLayout *hlayout_2;
QHBoxLayout *hlayout_1;
QHBoxLayout *hlayout[4];//水平
QVBoxLayout *layout;//垂直
QVBoxLayout *layout_1;//垂直
};
mywindow.cc
#include "mywindow.h"
#include<QApplication>
mywindow::mywindow()
{
srand(getpid());
int i,j,k;
i=j=k=0;
st = true;
count = 10;
num = 0;
timer = new QTimer;
timer->start(1000);//1s
timer->stop();
click_timer = new QTimer;
click_timer->start(1000);//1s
click_timer->stop();
layout = new QVBoxLayout;
hlayout_2 = new QHBoxLayout;
label_1 = new QLabel("time:");
label_2 = new QLabel("bingo:");
lcd1 = new QLCDNumber;
lcd2 = new QLCDNumber;
lcd1->setDigitCount(2);//默认最多显示5位
lcd1->setSegmentStyle(QLCDNumber::Flat);
lcd1->display(10);
lcd2->setDigitCount(2);//默认最多显示5位
lcd2->setSegmentStyle(QLCDNumber::Flat);
lcd2->display(0);
hlayout_1 = new QHBoxLayout;//剩余 打击
hlayout_1->addWidget(label_1);
hlayout_1->addWidget(lcd1);
hlayout_1->addStretch();
hlayout_1->addWidget(label_2);
hlayout_1->addWidget(lcd2);
layout->addLayout(hlayout_1);
layout_1 = new QVBoxLayout;
button_1[0] = new QPushButton("start");
button_1[1] = new QPushButton("stop");
button_1[2] = new QPushButton("restr");
button_1[3] = new QPushButton("quit!");
for(i=0; i<4; i++)
{
button_1[i]->setMinimumSize(40,40);
layout_1->addWidget(button_1[i]);//功能
}
for(i=0;i<4;i++)
{
hlayout[i] = new QHBoxLayout;
for(j=0;j<6;j++)
{
button[k] = new QPushButton(QIcon("s.png"),"");//函数参数要求
button[k]->setMinimumSize(80,80);
hlayout[i]->addWidget(button[k]);
connect (button[k],SIGNAL(clicked()),this,SLOT(myslot()));
k++;
}
layout->addLayout(hlayout[i]);
}
hlayout_2->addLayout(layout_1);
hlayout_2->addLayout(layout);
setLayout(hlayout_2);
mydisableall();//初始没有地鼠!
connect(button_1[0],SIGNAL(clicked()),this,SLOT(myslot_start()));//开始/暂停
//stop?
connect(button_1[2],SIGNAL(clicked()),this,SLOT(myslot_restart()));//重新开始
connect(button_1[3],SIGNAL(clicked()),qApp,SLOT(quit()));//退出
connect(timer,SIGNAL(timeout()),this,SLOT(mytimer()));//递减
connect(click_timer,SIGNAL(timeout()),this,SLOT(myclick_timer()));//递减
}
void mywindow::myclick_timer(void)
{
mydisableall();
button[rand()%24]->setEnabled(true);
}
void mywindow::mytimer(void)
{
count--;
lcd1->display(count);
if(count==0)///
{
mydisableall();
click_timer->stop();
enum QMessageBox::StandardButton str;
str = QMessageBox::warning(this,"title:warn","warning::hello world",QMessageBox::Yes|QMessageBox::No);
//QMessageBox::aboutQt(this);
if(str == QMessageBox::Yes)
myslot_restart();
if(str == QMessageBox::No)
qApp->quit();
}
}
void mywindow::myslot_restart(void)
{
timer->start();
click_timer->start();
count = 10;
num = 0;
lcd1->display(count);
lcd2->display(num);
button_1[0]->setText("start");
st = true;
}
void mywindow::myslot_start(void)
{
if(st)
{
//button[rand()%24]->setEnabled(true);
button_1[0]->setText("pause");
timer->start();
click_timer->start();
}
else
{
mydisableall();
//button[rand()%24]->setEnabled(true);
button_1[0]->setText("start");
timer->stop();
click_timer->stop();
}
st = !st;
}
void mywindow::mydisableall()
{
int i ;
for(i=0;i<4*6;i++)
button[i]->setDisabled(true);
return;
}
void mywindow::myslot()
{
int i ;
for(i=0;i<4*6;i++)
button[i]->setDisabled(true);
button[rand()%24]->setEnabled(true);
num++;
lcd2->display(num);
click_timer->start();
}