【无标题】

## Qt介绍

###         多平台C++图形界面应用层编程框架

## 界面设计

###         简单方法: 在界面设计模式下,通过拖拽基础控件进行设计。

## 基础控件

~~~cpp
1 <QLCDNumber Class>     
基础方法:
    display();   //显示
    value();    //获取
    setFixedSize();//设置固定大小 
    
2 <QPushButton Class>   
基础方法:
    setText();     //设置字符串
    text();        //获取
    setFixedSize();//设置固定大小 
信号:
    clicked();   //当按钮按下触发该信号

3 <QLineEdit Class>       
基础方法:
    setText();       //设置字符串
    text();          //获取
    setFixedSize(); //设置固定大小 
    clear();        //清空
    insert();       //追加插入
4 <QTextEdit Class>    
基础方法:
    setText();      //设置字符串
       append();        //追加显示
    setFixedSize(); //设置固定大小 
    clear();       //清空
~~~

==调试打印==

```cpp
#include <QDebug>
qDebug()<<"调试信息";  //输出调试信息
```


## Qt基本工作原理

###             事件驱动 + 信号与槽

###      关联信号与槽

~~~cpp
方法1: 通过connect实现信号与槽的绑定。
connect( sender, SIGNAL(signal),receiver, SLOT(method) );
//      发送者,  信号,         接收者,      方法

方法2: 在界面设计模式下,找到发送者控件右键转到槽选择信号进行绑定。

注意:信号与槽的参数匹配
~~~

## <font color=red>作业:</font>
```cpp
编程实现简易计算器 
基本功能:实现+ - * /  退格,清空
扩展功能: 实现历史记录

涉及的知识点:
类型转换   int   QString  double 
//https://www.cnblogs.com/lvchaoshun/p/7270576.html

split() ; //对Qstring进行分割
sscanf(); //进行格式提取
```

​    


## 1. 布局方式(布局器)

###         1.1 绝对布局 

~~~cpp
基本原理:控件对象直接调用setGeometry();设置绝对坐标即可。
~~~

###     1.2 水平布局 (QHBoxLayout)

~~~cpp
基本方法:
    addWidget();  //添加控件
    addLayout();  //添加布局器
~~~

###     1.3 垂直布局(QVBoxLayout)

~~~cpp
基本方法:
    addWidget();  //添加控件
    addLayout();  //添加布局器
~~~

###     1.4 栅格布局 (QGridLayout)

~~~cpp
基本方法:
    addWidget();  //添加控件
    addLayout();  //添加布局器
~~~

## 2.文件对话框 

~~~cpp
<QFileDialog Class>
基本方法:
    getOpenFileName();  //获取打开的文件路径名
    getOpenFileNames(); //获取打开的多个文件路径名
~~~

## 3. 基础控件

~~~cpp
<QLabel Class>
基础方法:
    setText();    //设置字符串
    setPixmap();  //显示图片
    setMinimumSize(); //设置最小尺寸

~~~

## <font color=red>作业:</font>
```cpp
图片浏览器
基本要求: 1.纯代码生成界面  2.实现图片切换 3.记录浏览过的图片 
扩展功能: 实现幻灯片播放、缩放、显示gif图片
提示:
    scaled();
    <QMovie Class>
```

​    


## 1. 对话框

~~~cpp
1.文件对话框(QFileDialog)
基本方法:
    getOpenFileName();          //获取打开的文件路径名
    getOpenFileNames();         //获取打开的多个文件路径名
    getSaveFileName();            //获取保存的文件路径名
    getExistingDirectory();        //获取文件夹
2.消息对话框(QMessageBox)
基本方法:
    about()                //普通消息(没有图标而已)
    aboutQt()            //关于qt信息
    critical()            //错误
    information()        //信息
    question()            //询问
    warning();            //警告

3.输入对话框(QInputDialog)
基本方法:
       getText();          //获取字符串
    getInt();           //获取整形
    getDouble();        //获取浮点数
    getItem();            //获取item
4.颜色对话框(QColorDialog)
基本方法:
    getColor();        //获取颜色
5.字体对话框(QFontDialog)
基本方法:
    getFont();        //获取字体
~~~

## 2. 主窗口

~~~cpp
1.标题栏WindowTitle     
    setWindowTitle();    //设置标题
    setWindowIcon();    //设置图标
2.菜单栏QMenuBar、QMenu、QAction  
    QMenuBar *mbar =  menuBar();   //获取QMenuBar对象
    QMenu *file = new QMenu("文件");
    mbar->addMenu(file);           //将Menu添加到MenuBar
    QAction *file_open = new QAction(QIcon(":/icon/open.png"),"打开文件");
    file->addAction(file_open);   //将Action添加到Menu
3.工具栏QToolBar
    QToolBar *tbar = addToolBar("工具"); //获取QToolBar对象
    tbar->addAction(file_open);   //将Action添加到ToolBar
4.中央窗口CentralWidget   
    QTextEdit *te = new QTextEdit;
    this->setCentralWidget(te);   //将QTextEdit添加到中央窗口            
5.状态栏QStatusBar
    QStatusBar *sbar = statusBar();    //获取QStatusBar对象
    QLabel *lab = new QLabel("new.txt");
    sbar->addWidget(lab);              //把标签放到状态栏中
~~~

## 3. 基础控件

~~~cpp
<QTextEdit Class>
基本方法:
    setText();            
    append();           
    clear();    
    setFont();            //设置字体    
    setCurrentFont();    //设置当前字体
    setTextColor();        //设置字体颜色
    copy();                //复制    
    paste();            //粘贴
    toPlainText();        //获取
    insertPlainText();    //插入数据
~~~

## <font color=red>作业:</font>
```cpp
文本编辑器
基本要求:实现文本编辑,字体设置,颜色设置,复制与粘贴
扩展功能:查找、打开文件与保存文件
```

​ 


## 1. 事件机制

​    基本原理:重写对应的虚函数。

~~~cpp
1.鼠标事件 
    void mousePressEvent(QMouseEvent *event);       //捕获鼠标点击事件  
    void mouseDoubleClickEvent(QMouseEvent *event); //捕获鼠标双击事件
    void mouseReleaseEvent(QMouseEvent *event);        //捕获鼠标释放事情
    void mouseMoveEvent(QMouseEvent *event);        //捕获鼠标移动事件
    void wheelEvent(QWheelEvent *event);            //滚轮事件
//setMouseTracking(true); //开启鼠标追踪功能

<QMouseEvent Class>
 基本方法:
     pos();         //鼠标坐标
    button();     //鼠标键值
<QWheelEvent Class>
基本方法:
    angleDelta(); //滚轮的旋转角度

2.键盘事件
    void keyPressEvent(QKeyEvent *event);    //按键按下
    void keyReleaseEvent(QKeyEvent *event);  //按键释放
<QKeyEvent Class>
基本方法:
    key();            //键盘键值
    isAutoRepeat();    //检测到自动重复
3.绘图事件();
    void paintEvent(QPaintEvent *event);    //绘图事件
    
注意: update(); //刷新绘图事件
4.定时事件
    void timerEvent(QTimerEvent *event);    //定时事件
    
注意: 通过startTimer(); //启动
      通过killTimer();  //结束
    
~~~

## 2. 基础控件

~~~cpp
<QPainter Class>
基本方法:
    setPen();            //设置笔
    setFont();            //设置字体
    drawPoint();        //绘制点
    drawLine();            //绘制线段
    drawRect();            //绘制矩形
    drawEllipse();        //绘制圆
    drawText();            //写文字
    drawPixmap();         //绘制图片
    translate();        //移动位置
    rotate();           //旋转
    painter.setRenderHint(QPainter::Antialiasing, true);  //抗锯齿 

<Qtimer Class>
基本方法:
       start();
    stop();
重要信号:
    timeout();      //当设定的时间到了 触发该信号
~~~

## <font color=red>作业:</font>
```cpp
作业1:
    设计一个小游戏,例如打地鼠
    基本功能:打地鼠
    扩展功能:统计分数
 
作业2:
       设计一个时钟,动态显示时间
    基本功能:显示系统时间
    扩展功能:可以修改时间
```

​    


   

## 1. 文件操作

~~~cpp
<QFile Class>
基本方法:
    oepn();        //打开 
    close();    //关闭
    read();        //读
    readAll();  //全都读取
    readLine();    //按行读取
    atEnd();    //在末尾   
    write();    //写入
注意打开方式:QIODevice::ReadOnly,QIODevice::WriteOnly,QIODevice::ReadWrite,QIODevice::Append
QIODevice::Truncate
~~~

## 2. 文件属性

~~~cpp
<QFileInfo Class>
基本方法:
    size();              //大小
    baseName();          //基本名
    fileName();          //基本名(带后缀)
    suffix();            //后缀
    absoluteFilePath();  //文件名带路径
    path();              //路径名
    isDir();             //判断是否是文件夹
~~~

## 3. 文件夹的遍历

~~~cpp
<Qdir Class>
基本方法:
    entryList();        //获得文件下的所有文件的基本名(带后缀)
    entryInfoList();     //获得文件下的所有文件的属性

注意:根据需求设置过滤器
~~~

## 4. Qt网络编程

准备工作: 

​    1.在pro文件中,添加库文件network     例如:QT       += core gui network

​    2.在.h文件中,添加对应的头文件

~~~cpp
1.<QTcpSocket Class>
基本方法:
    connectToHost(); //连接服务器
    read();            //接收
    wirte();        //发送
    close();        //关闭
重要的信号:
    readyRead();     //当数据到达缓冲区 触发该信号
    connected();    //连接成功
    disconnected();  //断开连接
    error(QAbstractSocket::SocketError); //错误
    stateChanged();  //状态变化
    
2.<QUdpSocket Class>
基本方法:
    writeDatagram();    //发送udp数据
    readDatagram();        //接收udp数据
重要的信号:
    readyRead();     //当数据到达缓冲区 触发该信号
    
~~~

## <font color=red>作业:</font>
```cpp
简易文件传输客户端
    基本功能:发送与接收文本文件
    扩展功能:支持查看服务器上的资源文件,发送与接收任意文件。
 
```

​    


## 1. 界面跳转

~~~cpp
基本原理:
    new出第二个窗口对象,执行show方法,原窗口关闭或隐藏
    返回:当第二个窗口关闭时,触发关闭信号,第一窗口接收到该信号,执行show (通过connect函数实现)
~~~

## 2. 多媒体

//注意:使用时添加库文件multimedia  multimediawidgets

~~~cpp
1 <QMediaPlayer Class>
基本方法:
    play();            //播放
    pause();        //暂停
    stop();            //停止
    setMedia();        //设置Media
    setPlaylist();    //设置播放列表
    setVideoOutput();//设置视频输出
    setMuted();        //禁音
    setVolume();    //设置音量
重要信号:
    positionChanged();     //位置变化
    error();            //错误
    stateChanged();        //播放状态
   
2 <QVideoWidget Class> 
基本方法:
    show();             //显示
    setBrightness(); //设置亮度
    showFullScreen();//全屏显示    

3 <QMediaPlaylist Class>  
基本方法:
    addMedia();        //添加Media
    clear();        //清空
    currentIndex(); //获取当前index
    currentMedia(); //获取当前media
    removeMedia();    //删除Media
    setPlaybackMode();    //设置播放模式
    next();            //下一首
    previous();        //上一首   
    
~~~

## <font color=red>作业:</font>
```cpp
Qt综合项目
 
```

​    


​ 

1. Qt数据库编程
1 <QSqlDatabase Class>
基本方法:
    addDatabase();          //添加对应的驱动
    setDatabaseName();      //设置数据库名
    open();                //打开数据库
    exec();                //执行sql语句
    close();               //关闭

2 <QSqlQuery Class>
基本方法:
    exec();                 //执行sql语句
    next();                 //定位到value处
    value();                //获取value
2. Qt网络编程之服务器
1 udp服务器
<QUdpSocket Class >
基本方法:
    bind();                    //绑定地址信息
    readDatagram();             //接收数据
    writeDatagram();            //发送数据
    hasPendingDatagrams();      //判断是否有数据
重要信号:
    readyRead();                
    
2 tcp服务器
<QTcpServer Class>
基本方法:
    listen();                   //绑定并进入监听状态
    nextPendingConnection();     //建立连接
重要信号:
    newConnection();            //有新的连接
<QTcpSocket Class>
基本方法:
    read();
    readAll();
    write();
重要信号:
    readyRead();    
3.容器
1 <QListWidget Class>
基本方法:
    addItem();          //添加item
    currentItem();      //获取当前item
    clear();            //清空
    currentRow();        //对应的行
    setDragEnabled();   //允许拖出
    setAcceptDrops();   //允许拖入
重要信号:
    itemClicked();      //单击
    itemDoubleClicked(); //双击
    itemEntered();      //拖拽item时触发

2 <QScrollArea Class>
基本方法:
    setWidget();    //设置控件
    takeWidget();   //获取控件对象
    setAlignment(); //设置对齐方式
    
3 <QTabWidget Class>
基本方法:
    addTab();          //添加Tab
    removeTab();       //删除Tab
    currentIndex();    //当前Tab索引
    setTabsClosable(); //设置是否添加关闭按钮
    
重要信号:
    tabBarClicked(int);      //点击tabBar
    tabCloseRequested(int);  //关闭请求信号

4.<QStackedWidget Class>
基本方法:
    addWidget();            //添加
    removeWidget();         //删除
    setCurrentIndex();      //显示当前Widget
    setCurrentWidget();     //显示当前Widget

作业:
Qt综合项目
 
    

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值