QT学习2
构造函数指定父容器、setText,getText,size,resize,move,clicked。
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键顺序调整。
注意:窗体、视图、选择要隐藏或显示的区域。
1、在代码中使用connect连接。
2、右击控制转到槽。
3、使用信号和槽编辑器连接。
4、第二个按键,控制与控件之间有信号和槽的连接。
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);}");
选择中控件、右击修改样式表
3、样式表的语法是CSS,是一种制作网页常用的语法。
搜索关键字:Qt 样式表,Qt css
1、创建目录,尽量单独存储图片
2、添加资源文件、添加前缀、选中添加文件。
3、在样式表中选择要使用的文件。
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中什么情况下需要多线程?
在单线程时,如果在耗时较长的操作,那么主界面会被阻塞。
会产生卡死的现象。
a、必须要继承
b、必须要重写run函数
QThread::wait(time);
功能:等待线程结束并回收,与pthread_join一样。
time:设置要等待的秒数,如果时间到了线程还没有结束则等待失败,默认值是ULONG_MAX(一直等下去)。
4、终止线程
QThread::terminate(),让线程结束执行。
terminated(),线程结束信号。
1、在创建类时立即添加 Q_OBJECT
2、如果编译后末添加,把所有Qt自动生成的文件删除
3、使用qmake -project、qmake、make
QMutex 互斥量
QReadWriteLock 读写锁
QWaitCondition 条件变量
QT学习2的更多相关文章
- QT学习第1天
QT学习第一天 坚持住!! 一 Qt概述 1.Qt发展历史 (1)1991年诞生(Haavard Nord/Eirik Chambe-Eng), (2)1994年创立Troll Tech(奇趣科技) ...
- 【转载】分享一些Qt学习资源,欢迎下载
资源来源:http://bbs.csdn.net/topics/390358737 经过我一翻整理,把一些我收集到的Qt学习资源分享给大家,主要适合新手,老鸟可以直接忽略我.要说明一下,很多资源都是在 ...
- QT学习之路--创建一个对话框
Q_OBJECT:这是一个宏,凡是定义信号槽的类都必须声明这个宏. 函数tr()全名是QObject::tr(),被他处理过的字符串可以使用工具提取出来翻译成其他语言,也就是做国际化使用. 对于QT学 ...
- 转载: Qt 学习之路 2归档
Qt 学习之路 2归档 http://www.devbean.net/2012/08/qt-study-road-2-catelog/
- Qt 学习资料
Qter开源社区http://www.qter.org/ [Qt教程], 作者yafeilinux [视频] QT学习之路:从入门到精通 <C++ Qt 编程视频教程>
- qt学习笔记(五) QGraphicsPixmapItem与QGraphicsScene的编程实例 图标拖动渐变效果
应大家的要求,还是把完整的project文件贴出来,大家省点事:http://www.kuaipan.cn/file/id_48923272389086450.htm 先看看执行效果,我用的群创7寸屏 ...
- Qt学习博客推荐
附录C Qt资源 C.1 Qt 官方资源 全 球各大公司以及独立开发人员每天都在加入 Qt 的开发社区.他们已经认识到了Qt 的架构本身便可加快应用程序开发进度.这些开发人员,无论是想开发单平台软件. ...
- qt学习教程1.qt开发环境搭建
qt学习教程1.qt开发环境搭建 首先下载qt 下载地址:http://download.qt.io/archive/qt/ 此教程使用的版本为5.1.1 下载好后,打开安装包,然后点下一步 选择一个 ...
- QT学习教程
原地址:http://www.devbean.NET/2012/08/qt-study-road-2-catelog/ 网上看到的不错的教程 本教程以qt5为主,部分地方会涉及qt4.据说非常适合qt ...
- Qt学习之路
Qt学习之路_14(简易音乐播放器) Qt学习之路_13(简易俄罗斯方块) Qt学习之路_12(简易数据管理系统) Qt学习之路_11(简易多文档编辑器) Qt学习之路_10(Qt ...
随机推荐
- Tomcat学习总结(9)——Apache Tomcat 8新特性
一.Apache Tomcat 8介绍 Apache Tomcat 8RC1版于2013年8月份发布.它 经过了2年的开发,引入了很多新特征,由于目前还只是Alpha版,故不推荐在产品中使用.但是我们 ...
- vue的项目优化---回顾
陆陆续续也用vue开发或重构了不少项目,在这期间遇到不少的坑,也尝试过优化.在此记录一下,想到一点算一点吧: 一.尽可能的减少watcher的数量 当监听数据是一个对象的时候,最好具体到监听对象的 ...
- Huffman树与编码
带权路径最小的二叉树称为最优二叉树或Huffman(哈夫曼树). Huffman树的构造 将节点的权值存入数组中,由数组开始构造Huffman树.初始化指针数组,指针指向含有权值的孤立节点. b = ...
- C#Redis Sorted-Sets
一.前戏 Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score) ...
- vue简单的脚手架搭建项目
第一步 node环境安装 1.如果本机没有安装node运行环境,下载node安装包进行安装 下载地址:https://nodejs.org/en/或者http://nodejs.cn/ 第二步 nod ...
- SQL-Server多表关联查询并分页
一.多表关联查询 1,left join RelaTimeLog表 和 ValidFlight表关联查询 order by t.FlightId desc 2,与group by连用 group by ...
- Git使用(一)——Cygwin
1.下载2.安装镜像:1)上海交大的FTP:ftp://ftp.sjtu.edu.cn/sites/cygwin.com/pub/cygwin/2)163的镜像:http://mirrors.163. ...
- 表达式树(Expression Trees)
[翻译]表达式树(Expression Trees) 原文地址:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/con ...
- NavicatForOracle无法连接数据库,报错ORA-28547
因为换了新项目,要用到oracle数据库,但是用Navicat连接oracle不像连接MySql那样简单,连接的时候总是报ORA-28547,最后搜了一下解决方案发现是install client没有 ...
- Inviting Friends(hdu3244 && zoj3187)完全背包+二分
Inviting Friends Time Limit: 1 Second Memory Limit: 32768 KB You want to hold a birthday party, invi ...