一、常用控件与常用的功能函数。
 QDialog、QMainWindow、QPushButton、QLabel、QLineEdit
 构造函数指定父容器、setText,getText,size,resize,move,clicked。
 
二、Qt creator(集成开发环境)
 1、创建新工程
    打开Qt createor、创建项目、Qt控件项目、Qt Gui应用、选择主窗口的类型,设置类名、文件名、是否生成界面文件。
 2、打开旧工程
     a、版本一致,直接打开。
    b、如果Qtcreator的版本不同,需要重新构建。
    c、删除所有Qt自动生成的文件,使用qmake -project、qmake再次构建项目。
 3、使用设计师制作界面
    a、创建界面文件:
     1、在创建工程时勾选界面文件
     2、使用设计师新建
     3、在工程中新建界面文件
    b、设计师窗口布局
     a、控件盒:包含了Qt中所有可以使用的控件及工具。
     b、画布:所见即所得的显示,但要以最终的显示效果为主。
     c、对象查看器:在此窗口可以设置控件对象的名字和类型。
     d、属性编辑器:设置对象的各种属性。
     e、对象和槽编辑器:为对象连接现有的信号和槽,无法生成新的槽函数。
    c、界面布局调整
   调整控件的位置:
      up、down、left、right 每次十像素移动
      Ctrl+up、down、left、right 每次一像素移动
   调整控件的大小:
      控件的x、y固定不变
      Shift+up、down、left、right 每次改变10个像素
      Ctrl+Shift+up、down、left、right 每次改变10个像素
  d、tab键顺序
     在部门场景下无法使用鼠标,因此tab位置至关重要。
     第4个按键,进入tab键顺序调整。
       
  注意:窗体、视图、选择要隐藏或显示的区域。
 4、信号和槽的连接
    1、在代码中使用connect连接。
    2、右击控制转到槽。
    3、使用信号和槽编辑器连接。
    4、第二个按键,控制与控件之间有信号和槽的连接。
 5、在代码中使用控件对象
    1、ui->对象。
    2、使用设计单独设计一份ui文件
   把ui文件转成.h文件再使用,uic file.ui -o file.h
 
三、自动布局
 当程序运行时窗口的大小随时可能会变化,如果固定控件的位置和大小,那么会造成布局混乱。
 1、固定窗口的大小。
 2、使用"弹簧"使用控件居中,但要配合布局器使用(水平、垂直、栅栏)。
 
四、显示风格设置
 1、在代码中设置显示风格。

pushButton->setStyleSheet("background-color: rgb(255, 0, 0);}");
this->setStyleSheet("QPushButton{background-color: rgb(255, 0, 0);}"
"QPushButton:hover{background-color: rgb(0, 0, 0);}"
"QPushButton:pressed{background-color: rgb(0, 0, 255);}");
 2、在设计师中改变样式表
    选择中控件、右击修改样式表
 3、样式表的语法是CSS,是一种制作网页常用的语法。
    搜索关键字:Qt 样式表,Qt css
五、资源和图片
   1、创建目录,尽量单独存储图片
   2、添加资源文件、添加前缀、选中添加文件。
   3、在样式表中选择要使用的文件。
   练习:实现图片浏览器。
六、Qt中的延时
 Qt没有跨平台的睡眠函函数。
   1、多线程。
   2、自定义休眠函数。
   3、让sleep后台运行 QCoreApplication::processEvents();
七、定义时器

   Qtimer 类
   start(int msec) 启动定义器
  void timeout(void) 信号
  qDebug 类似printf函数的调试函数
 
一、事件与处理
 程序在运算过程中发生的一些事情:鼠标单击、键盘的按下...
 这些的事件的监控与处理在Qt中不是以信号的方式处理的。
 当这些事件发生时会调用QObject类中的功能函数(虚函数),所有的控件类都继承了这个类。

常用的鼠标事件:
void mousePressEvent(QMouseEvent *); 按下
void mouseReleaseEvent(QMouseEvent *); 弹起
void mouseMoveEvent(QMouseEvent *); 按下时并移动
void mouseDoubleClickEvent(QMouseEvent *); 双击(会触发按下和弹起);
通过QMouseEvent 可以判断出是个按键:
event->button() == Qt::LeftButton
event->button() == Qt::RightButton
event->button() == Qt::MidButton
常用的键盘事件:
void keyPressEvent(QKeyEvent *); 按下
void keyReleaseEvent(QKeyEvent *); 弹起 通过QKeyEvent 可以判断出按键的键值:
event->key == Qt::Key_Up;
常用的窗口事件:
void closeEvent(QCloseEvent *); 窗口关闭
void paintEvent(QPaintEvent *); 窗口显示
void moveEvent(QMoveEvent *); 窗口移动
 练习:使用键盘事件和定时器,实现一个在窗口上移动的老鼠。
二、线程与多线程
 1、在Qt中什么情况下需要多线程?
    在单线程时,如果在耗时较长的操作,那么主界面会被阻塞。
    会产生卡死的现象。
 2、Qthread类
    a、必须要继承
    b、必须要重写run函数
 3、等待线程
    QThread::wait(time);
    功能:等待线程结束并回收,与pthread_join一样。
    time:设置要等待的秒数,如果时间到了线程还没有结束则等待失败,默认值是ULONG_MAX(一直等下去)。
  
 4、终止线程
    QThread::terminate(),让线程结束执行。
    terminated(),线程结束信号。
   练习:如何用信号槽,在子线程里发送信号给主线程,让主线程显示图片(修改GUI主界面)。
 1、在创建类时立即添加 Q_OBJECT
 2、如果编译后末添加,把所有Qt自动生成的文件删除
 3、使用qmake -project、qmake、make
三、线程同步
   QMutex 互斥量
   QReadWriteLock 读写锁
   QSemaphore 信号量
   QWaitCondition 条件变量
 功能与Linux系统中的一样,但这4项是跨平台使用的。
 

 
 

QT学习2的更多相关文章

  1. QT学习第1天

    QT学习第一天  坚持住!! 一 Qt概述 1.Qt发展历史 (1)1991年诞生(Haavard Nord/Eirik Chambe-Eng), (2)1994年创立Troll Tech(奇趣科技) ...

  2. 【转载】分享一些Qt学习资源,欢迎下载

    资源来源:http://bbs.csdn.net/topics/390358737 经过我一翻整理,把一些我收集到的Qt学习资源分享给大家,主要适合新手,老鸟可以直接忽略我.要说明一下,很多资源都是在 ...

  3. QT学习之路--创建一个对话框

    Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...

  4. 转载: Qt 学习之路 2归档

    Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/

  5. Qt 学习资料

    Qter开源社区http://www.qter.org/ [Qt教程], 作者yafeilinux [视频] QT学习之路:从入门到精通 <C++ Qt 编程视频教程>

  6. qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果

    应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...

  7. Qt学习博客推荐

    附录C Qt资源 C.1 Qt 官方资源 全 球各大公司以及独立开发人员每天都在加入 Qt 的开发社区.他们已经认识到了Qt 的架构本身便可加快应用程序开发进度.这些开发人员,无论是想开发单平台软件. ...

  8. qt学习教程1.qt开发环境搭建

    qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...

  9. QT学习教程

    原地址:http://www.devbean.NET/2012/08/qt-study-road-2-catelog/ 网上看到的不错的教程 本教程以qt5为主,部分地方会涉及qt4.据说非常适合qt ...

  10. Qt学习之路

      Qt学习之路_14(简易音乐播放器)   Qt学习之路_13(简易俄罗斯方块)   Qt学习之路_12(简易数据管理系统)   Qt学习之路_11(简易多文档编辑器)   Qt学习之路_10(Qt ...

随机推荐

  1. MutationObserver DOM变化的观察

    简单的给MutationObserver做个测试及总结笔记. MutationObserver,window上的一个(构造)函数,可以通过其创建的观察者(观察对象)达到观察DOM的变化的效果. 可适用 ...

  2. 前端通信:ajax设计方案(七)--- 增加请求错误监控、前端负载均衡以、请求宕机切换以及迭代问题修复

    距离上个迭代过了很长时间,中间经历了很多事情,也在每个空余时间构思了这个迭代的东西以及下个迭代要做的东西.时间周期稍微长了,望见谅. 而且,至今这个开源库的start也已经到了165个了,会支持关注和 ...

  3. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(七):集成 Druid 数据源

    数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏 ...

  4. mysql建立索引的一些小规则

    1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引: ...

  5. mysql使用pdo简单封装select语句

    最终代码: function pdo_array_query($pdo, $table_name, $data, $fields=array('*')){ //Will contain SQL sni ...

  6. JavaScript 片段

    js split 的用法和定义 js split分割字符串成数组的实例代码 <script language="javascript"> str="2,2,3 ...

  7. java web项目答辩答辩题总结(书本网上语言答辩+自己的语言答辩)

    答辩每个人的总分为1.5分.每个人主要问3个问题. 开发流程===>系统架构====>项目模块+功能===>项目得失重定向与转发:?九个隐式对象?get与post的区辨:?jsp有静 ...

  8. Spring-Task思维导图

    最近在搞一个定时任务的相关东西,为了方便记忆,这里将知识点总结成一个思维导图.后续也会通过思维导图的方式发布博客.

  9. IIS 是如何处理 ASP.NET 请求的

    #main{ width:1250px; } #mainContent{ width:915px } img#imgTop{ max-width:850px; } Web 服务器 VS Web 应用程 ...

  10. log4j2配置文件log4j2.xml详解(转载)

    此博文转载自阿豪聊干货:https://www.cnblogs.com/hafiz/p/6170702.html 一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2. ...