qt第三天
来源:互联网 发布:苹果6s有数据快捷键 编辑:程序博客网 时间:2024/04/29 10:13
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_OBJECTpublic: 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_OBJECTpublic: 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_OBJECTpublic: 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; }}
0 0
- Qt学习第三天
- Qt学习第三天
- qt第三天
- 一步步学Qt,第三天-Qt动态调用机制
- 一步步学Qt,第三天-工具选择及其配置
- [记录]<<QT学习之路2>>学习第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- 第三天
- MATLAB-R2015b-win64安装详细教程
- Redis中的关系查询(范围查询,模糊查询等...)
- JAVA Socket 多线程实现多客户端的通信
- 判断 ttf 字体文件是否包含某个字
- 有用的网站
- qt第三天
- golang:闲谈数据库操作
- 746 A. Compote codeforces
- 未完成题目
- ubuntu下安装XXX失败---解决方法
- 花生壳+Tomcat实现外网对本地项目的访问
- mysql设置外部访问
- 喷水装置 I
- 深度学习概述:从感知机到深度网络