qq登陆框
启动qtcreator:
tarena$qtcreator
1,新建项目->Qt控件项目->Qt GUI应用
2,输入项目名称、项目保存路径
qt Creator版本的加法器:
- 构建界面
- 在adder.h的头文件中添加槽函数
#ifndef ADDER_H
#define ADDER_H
#include <QMainWindow>
namespace Ui {
class Adder;
}
class Adder : public QMainWindow
{
Q_OBJECT
public:
explicit Adder(QWidget *parent = 0);
~Adder();
//自定义槽函数 完成计算
public slots:
void getRes();
private:
Ui::Adder *ui;
};
#endif // ADDER_H
- app.cpp中实现槽函数并与按钮关联
#include "adder.h"
#include "ui_adder.h"
Adder::Adder(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Adder)
{
ui->setupUi(this);
//给按钮绑定点击事件
connect(ui->btn,SIGNAL(clicked()),this,SLOT(getRes()));
}
//实现槽函数
void Adder::getRes()
{
ui->rs->setText(QString::number(
ui->add->text().toDouble()+
ui->added->text().toDouble()
));
}
Adder::~Adder()
{
delete ui;
}
QQ login登陆页面
- 搭建界面
- 在qqlogin.h中添加槽函数
#ifndef QQLOGIN_H
#define QQLOGIN_H
#include <QMainWindow>
namespace Ui {
class QqLogin;
}
class QqLogin : public QMainWindow
{
Q_OBJECT
public:
explicit QqLogin(QWidget *parent = 0);
~QqLogin();
//添加一个槽函数,两个按钮连接同一个槽函数
public slots:
void loginAndCancel();
private:
Ui::QqLogin *ui;
};
#endif // QQLOGIN_H
- 实现槽函数,并且绑定
#include "qqlogin.h"
#include "ui_qqlogin.h"
QqLogin::QqLogin(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::QqLogin)
{
ui->setupUi(this);
//将两上按钮同时绑定到一个槽函数
connect(ui->bLogin,SIGNAL(clicked()),this,SLOT(loginAndCancel()));
connect(ui->bCancel,SIGNAL(clicked()),this,SLOT(loginAndCancel()));
}
//负责登陆和退出
void QqLogin::loginAndCancel(){
//通过sender来区分按钮
if(sender() == ui->bCancel){
this->close();
}else if(sender() == ui->bLogin){
if(ui->username->text() == "abc" && ui->password->text() == "123"){
qDebug("login success....");
}else{
qDebug("login fail....");
}
}
}
QqLogin::~QqLogin()
{
delete ui;
}
退出的时候,添加一个确认框
#include <QMessageBox>
//负责登陆和退出
void QqLogin::loginAndCancel(){
//通过sender来区分按钮
if(sender() == ui->bCancel){
QMessageBox msg(this);
msg.setText("are you quit?");
msg.setStandardButtons(
QMessageBox::Yes|QMessageBox::No
);
if(msg.exec() == QMessageBox::Yes){//进入事件循环,等到用户交互
this->close();
}
}
}
摇奖器的实现:
1.界面实现
2,YaoJiang.h头文件
#ifndef YAOJIANG_H
#define YAOJIANG_H
#include <QDialog>
#include <QPaintEvent>
#include <QImage>
#include <QTimer>
namespace Ui {
class YaoJiang;
}
class YaoJiang : public QDialog
{
Q_OBJECT
public:
explicit YaoJiang(QWidget *parent = 0);
~YaoJiang();
//绘制事件处理函数,当绘制事件发生的时候,就交给这个函数来处理
//其实是一个回调函数,系统调用这个函数来绘制
public:
void paintEvent(QPaintEvent *event);
private:
Ui::YaoJiang *ui;
//要绘制的图片
QImage img;
//图片编号
int ind;
QTimer *timer;
QString names[6];//人名
bool paintFlag;
//用来绘制的标志的槽函数
public slots:
void changePaintFlag();
};
#endif // YAOJIANG_H
3.YaoJiang.cpp实现文件
#include "yaojiang.h"
#include "ui_yaojiang.h"
#include <QPainter>
#include <QTime>
YaoJiang::YaoJiang(QWidget *parent) :
QDialog(parent),
ui(new Ui::YaoJiang)
{
qsrand(QTime::currentTime().msec());
ui->setupUi(this);
names[0] = "xiaoli66";
names[1] = "xiaoli55";
names[2] = "xiaoli11";
names[3] = "xiaoli22";
names[4] = "xiaoli33";
names[5] = "xiaoli44";
timer=new QTimer(this);
timer->setInterval(200);//0.2刷一下
timer->start();
this->connect(timer,SIGNAL(timeout()),this,SLOT(repaint()));
paintFlag = true;
connect(ui->btnStart,SIGNAL(clicked()),this,SLOT(changePaintFlag()));
connect(ui->btnStop,SIGNAL(clicked()),this,SLOT(changePaintFlag()));
}
void YaoJiang::changePaintFlag()
{
if(sender() == ui->btnStart){
paintFlag = true;
}else if(sender()==ui->btnStop){
paintFlag = false;
}
}
//回调方法,斜体表示受保护的方法
void YaoJiang::paintEvent(QPaintEvent *event){
QPainter qp(this);
//qp.drawLine(QPointF(100,100),QPointF(300,500));
if(paintFlag == true){
ind = (qrand()%4)+1;
QString imagePath = ":/i";
imagePath = imagePath +QString::number(ind)+".jpg";
// img.load(":/i1.jpg");//:前缀名/文件名
img.load(imagePath);//:前缀名/文件名
img.scaled(320,480);
qp.drawImage(100,100,img);
ui->pName->setText(names[ind-1]);
}else{
qp.drawImage(100,100,img);
}
}
YaoJiang::~YaoJiang()
{
delete ui;
}
鼠标事件的处理:
1,在头文件中声明,mousePressEvent为系统函数
//鼠标事件处理函数
public:
void mousePressEvent(QMouseEvent *event);
2,在.cpp文件中实现
void Dialog::mousePressEvent(QMouseEvent *event){
switch (event->buttons()) {
case Qt::LeftButton:
qDebug("left button press....%d==>%d",event->x(),event->y());
break;
case Qt::RightButton:
qDebug("right button press....%d==>%d",event->x(),event->y());
break;
case Qt::MidButton:
qDebug("middle button press...%d==>%d",event->x(),event->y());
break;
default:
break;
}
}
键盘事件的处理
1,头文件声明,keyPressEvent为系统函数
#include <QKeyEvent>
public:
void keyPressEvent(QKeyEvent *e);
2,实现
void Dialog::keyPressEvent(QKeyEvent *e){
switch (e->key()) {
case Qt::Key_Up:
qDebug("Key_Up press....");
break;
case Qt::Key_Down:
qDebug("Key_Down press....");
break;
case Qt::Key_Left:
qDebug("Key_left press....");
break;
case Qt::Key_Right:
qDebug("Key_right press....");
break;
default:
break;
}
}