zoukankan      html  css  js  c++  java
  • QT学习2

    一、常用控件与常用的功能函数。
     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项是跨平台使用的。
     

     
      
     
     
     
  • 相关阅读:
    给 admin 新建的 hdfs 文件的权限
    linux 常用命令
    如何快速把hdfs数据动态导入到hive表
    Kylin查询性能低下原因分析
    hadoop+hive使用中遇到的问题汇总
    hadoop 突然断电数据丢失问题
    用puthivestreaming把hdfs里的数据流到hive表
    创建 kylin Module/Cube
    【MySQL】MySQL的索引
    【MySQL】MySQL的约束
  • 原文地址:https://www.cnblogs.com/mingyoujizao/p/9558423.html
Copyright © 2011-2022 走看看