QT第二天学习
回顾:
qmake:
qmake -project //生成*.pro文件
qmake //makefile
make
注:if(qmake -v >=5)
then QT += widgets
乱码:QTextCodec
几何属性:
位置大小
文档怎么看
------------------------------------
1.QT类的结构:按模块划分
core模块:所有的其它QT模块都依赖这个模块,默认加载。
常用的类:
容器类:QList QString QByteArray
几何类:QPoint QSize QRect
文件:QFile
目录:QDir
gui模块:包含了开发图形界面应用程序所需要的功能,默认加载
QColor QFont QImage QIcon QCursor...
widgets模块:提供了一个用于创建典型桌面应用程序的UI元素的集合。
窗体类 |-框架窗体类(QMainWindow,菜单,工具栏,状态栏)
|-对话框窗体类(QDialog模态对话框和非模态对话框)
组件:显示组件,输入组件,按钮,容器,布局,表格...
窗体类:
QObject QPaintDevice
| |
-------------
|
QWidget
|
-----------------------------
| | |
QMainWindow QDialog 控件
QObject:
connect();
tr();
QPaintDevice:
所有的可视化组件都是绘制设备
QWidget:
负责可视化组件的常规属性和基本事件
常规属性:
几何属性:高度,宽度,位置
图标,光标,标题...
基本事件:
鼠标事件
键盘事件
绘制事件
图标,光标:
光标:QCursor
图标:QIcon
2.布局
布局,layout,就是把各个控件放在合适的位置,占据适当大小的空间
绝对位置法:
手工布局:
可视化布局:
在QT中,使用布局器QLayout进行布局
常用布局类:
QLayout
|-QBoxLayout
|-QHBoxLayout水平布局器
|-QVBoxLayout垂直布局器
|-QGridLayout网格布局
|-QFormLayout表单布局
伸展因子(器):俗称弹簧
addStretch(1);//参数是伸展力度
void QGridLayout::addWidget(
QWidget * widget,//需要添加的控件
int fromRow,//哪一行
int fromColumn,//哪一例
int rowSpan,//占几行
int columnSpan,//占几例
Qt::Alignment alignment = 0)//对齐方式
sizehint
代码一
mywidget.h
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
class myWidget : public QWidget
{
Q_OBJECT
public:
explicit myWidget(QWidget *parent = 0);
signals:
public slots:
};
#endif // MYWIDGET_H mywidget.cpp
#include "mywidget.h"
myWidget::myWidget(QWidget *parent) :
QWidget(parent)
{
}
main.cpp
#include <QApplication>
#include "mywidget.h"
#include <QIcon>
int main(int argc,char **argv)
{
QApplication app(argc,argv);
myWidget w;
QCursor cursor(Qt::SplitHCursor);//创建一个光标对象
w.setCursor(cursor);//为窗体设置光标
QIcon ico("ico.png");//创建图标对象
w.setWindowIcon(ico);//为窗体设置图标
w.show();
return app.exec();
}
代码二
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
class widget : public QWidget
{
Q_OBJECT
public:
explicit widget(QWidget *parent = 0);
signals:
public slots:
private:
QPushButton *btn1;
QPushButton *btn2;
QPushButton *btn3;
QPushButton *btn4;
QPushButton *btn5;
QPushButton *btn6;
QHBoxLayout *hbox;
QVBoxLayout *vbox;
QVBoxLayout *vbox1;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
widget::widget(QWidget *parent) :
QWidget(parent)
{
btn1 = new QPushButton("btn1",this);
btn2 = new QPushButton("btn2",this);
btn3 = new QPushButton("btn3",this);
hbox = new QHBoxLayout;//创建水平布局器
hbox->addStretch(1);//添加一个弹簧
hbox->addWidget(btn3);//添加控件到布局器中
hbox->addWidget(btn2);//添加的顺序即显示的顺序
hbox->addWidget(btn1);
hbox->addStretch(1);
// this->setLayout(hbox);//设置(安装、应用)布局器到窗口
vbox = new QVBoxLayout;
vbox1 = new QVBoxLayout;
btn4 = new QPushButton("btn4");
btn5 = new QPushButton("btn5");
btn6 = new QPushButton("btn6");
vbox->addWidget(btn4);
vbox->addWidget(btn5);
vbox->addWidget(btn6);
vbox->addStretch(1);
// this->setLayout(vbox);
vbox1->addLayout(hbox);
vbox1->addLayout(vbox);
setLayout(vbox1);
}
main.cpp
#include <QApplication>
#include "widget.h"
int main(int argc,char **argv)
{
QApplication app(argc,argv);
widget w;
w.show();
return app.exec();
}
代码三
myqq.h
#ifndef MYQQ_H
#define MYQQ_H
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
class myQQ : public QWidget
{
Q_OBJECT
public:
explicit myQQ(QWidget *parent = 0);
signals:
public slots:
private:
QLabel *labelTile;
QLabel *labelUser;
QLabel *labelPwd;
QLineEdit *editUser;
QLineEdit *editPwd;
QPushButton *btnLogin;
QPushButton *btnRegister;
QHBoxLayout *hbox1;
QHBoxLayout *hbox2;
QHBoxLayout *hbox3;
QVBoxLayout *vbox;
};
#endif // MYQQ_H
myqq.cpp
#include "myqq.h"
myQQ::myQQ(QWidget *parent) :
QWidget(parent)
{
labelTile = new QLabel("myQQ");
labelTile->setAlignment(Qt::AlignCenter);
labelTile->setFont(QFont("ABC",20,40,true));
labelUser = new QLabel("user:");
labelPwd = new QLabel("passwd:");
editPwd = new QLineEdit;
editUser = new QLineEdit;
btnLogin = new QPushButton("Login");
btnRegister = new QPushButton("Register");
hbox1 = new QHBoxLayout;
hbox2 = new QHBoxLayout;
hbox3 = new QHBoxLayout;
vbox = new QVBoxLayout;
hbox1->addWidget(labelUser);
hbox1->addWidget(editUser);
hbox2->addWidget(labelPwd);
hbox2->addWidget(editPwd);
hbox3->addWidget(btnLogin);
hbox3->addWidget(btnRegister);
vbox->addWidget(labelTile);
vbox->addLayout(hbox1);
vbox->addLayout(hbox2);
vbox->addLayout(hbox3);
this->setLayout(vbox);
this->setFixedSize(300,200);
this->setWindowFlags(Qt::FramelessWindowHint);
}
main.cpp
#include <QApplication>
#include "myqq.h"
int main(int argc,char ** argv)
{
QApplication app(argc,argv);
myQQ mq;
mq.show();
return app.exec();
}
代码四
#include <QApplication>
#include <QGridLayout>
#include <QComboBox>
#include <QWidget>
#include <QFormLayout>
#include <QLineEdit>
#include <QSpinBox>
int main(int argc,char ** argv)
{
QApplication app(argc,argv);
QComboBox cb1,cb2,cb3,cb4,cb5;
cb1.addItem("ABC");
cb1.addItem("CBA");
cb1.addItem("NBA");
// QGridLayout glayout;
// glayout.addWidget(&cb1,0,0,1,1);
// glayout.addWidget(&cb2,0,1,1,1);
// glayout.addWidget(&cb3,1,0,1,1);
// glayout.addWidget(&cb4,1,1,1,1);
// glayout.addWidget(&cb5,2,0,1,2);
QWidget w;
// w.setLayout(&glayout);
QLineEdit *nameLineEdit = new QLineEdit;
QLineEdit *emailLineEdit = new QLineEdit;
QSpinBox *ageSpinBox = new QSpinBox;
QFormLayout *formLayout = new QFormLayout;
formLayout->addRow("&Name:", nameLineEdit);
formLayout->addRow("&Email:", emailLineEdit);
formLayout->addRow("&Age:", ageSpinBox);
w.setLayout(formLayout);
w.show();
return app.exec();
}
我的qq界面设计代码
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QHBoxLayout>
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
signals:
public slots:
private:
QPushButton *btn1;
QPushButton *btn2;
QLabel *label1;
QLabel *label2;
QLabel *label3;
QLineEdit *line1;
QLineEdit *line2;
QHBoxLayout *hbox;
QHBoxLayout *hbox1;
QHBoxLayout *hbox2;
QHBoxLayout *hbox3;
QVBoxLayout *vbox1;
};
#endif // WIDGET_H widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent)
{
btn1=new QPushButton("登陆",this);
btn2=new QPushButton("注册",this);
label1=new QLabel("QQ 2116");
label2=new QLabel("用户名");
label3=new QLabel("密码");
line1=new QLineEdit;
line2=new QLineEdit;
hbox = new QHBoxLayout;
hbox->addStretch(1);
hbox->addWidget(label1);
hbox->addStretch(1);
hbox1 = new QHBoxLayout;
hbox1->addStretch(1);
hbox1->addWidget(label2);
hbox1->addWidget(line1);
hbox1->addStretch(1);
hbox2 = new QHBoxLayout;
hbox2->addStretch(1);
hbox2->addWidget(label3);
hbox2->addWidget(line2);
hbox2->addStretch(1);
hbox3 = new QHBoxLayout;
hbox3->addStretch(1);
hbox3->addWidget(btn1);
hbox3->addWidget(btn2);
hbox3->addStretch(1);
vbox1 = new QVBoxLayout;
vbox1->addLayout(hbox);
vbox1->addLayout(hbox1);
vbox1->addLayout(hbox2);
vbox1->addLayout(hbox3);
setLayout(vbox1);
this->setFixedSize(300,200);
} main.cpp
#include <QApplication>
#include "widget.h"
int main(int argc,char **argv)
{
QApplication app(argc,argv);
Widget w;
QCursor cursor(Qt::PointingHandCursor);//创建一个光标对象
w.setCursor(cursor);//为窗体设置光标
QIcon ico("ico.png");//创建图标对象
w.setWindowIcon(ico);//为窗体设置图标
w.show();
return app.exec();
}
QT第二天学习的更多相关文章
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145330孙文馨 《Java程序设计》第二周学习总结
20145330孙文馨第二周学习总结 第二周相比于第一周对java语言有了深一点的了解,也意识到多敲代码才是学习计算机语言的最好方法. 教材内容总结 类型.变量与运算符 *基本类型 整数(short. ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)
第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
- JDBC第二次学习
脑子太笨,必须得记录下来一些文字,方便回来查询. 这是我的第二次学习JDBC的笔记,看的是传智播客——李勇老师的JDBC系列,已看到第23集. 分析在实际项目中该如何应用JDBC 一个简单用户相关的数 ...
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- Qt 智能指针学习(7种指针)
Qt 智能指针学习 转载自:http://blog.csdn.net/dbzhang800/article/details/6403285 从内存泄露开始? 很简单的入门程序,应该比较熟悉吧 ^_^ ...
随机推荐
- (转)Vim的Python编辑器详细配置过程 (Based on Ubuntu 12.04 LTS)
为什么要用vim编辑py文件? 因为在Linux命令行中,缺少图形界面的IDE,vim是最佳的文本编辑器,而为了更好的编辑py文本,所以配置vim. 1. 安装完整版vim vi和vim的区别? 在L ...
- 升级版本后报这个异常 : org.springframework.beans.factory.NoUniqueBeanDefinitionException
今天写代码时出现上面这个异常,很是奇怪.从网上下载了个Spring源码包,通过追踪源码发现并没有到加载工程代码中去.于是分析和Spring包有关系. 查看依赖库发现有两个版本的Spring.通过分析去 ...
- Qt5:QSystemTrayIcon类实现程序托盘图标
windows下,在许多应用程序中都会实现一个托盘图标,用于隐藏应用程序窗口时还能对该应用程序进行简单的操作,例如 QQ ,renren等程序 那么,在Qt中,如何实现呢? 这就要用到Qt提供的 QS ...
- Java中的构造方法
什么是构造方法:每一个类中至少有一个构造方法,它用于创建该类对象,这个和OC中的init有异曲同工之妙. 构造方法的格式:A:方法名与类名相同 B:没有返回值类型,没有void C:没有具体的返回值 ...
- 去掉谷歌input记住账号或密码时默认出现的黄色背景
在谷歌浏览器会默认记住账号,而记住账号之后其input的背景会变成黄色,解决的办法如下: 方法一:直接用css的内阴影来覆盖黄色,代码如下: input:-webkit-autofill { -web ...
- JAVA调用c/c++代码
JNI是Java Native Interface的缩写,中文为JAVA本地调用.使用JNI可以很方便的用我们的Java程序调用C/C++程序.很多时候,某些功能用Java无法实现,比如说涉及到底层驱 ...
- extJS4.2.0 环境搭建教程(一)
一.环境搭建
- DNS架设准备+申请领域查询授权
1. 架设DNS服务器首先我们得安装一下的软件[root@bogon ~]# rpm -qa | grep ^bindbind-libs-9.8.2-0.37.rc1.el6.i686 <==给 ...
- Charles从入门到精通
Charles 从入门到精通 发表于 2015-11-14 12:00 文章目录 1. 目录 2. 简介 3. 安装 Charles 4. 将 Charles 设置成系统代理 5. Charles 主 ...
- [iOS Animation]-CALayer 视觉效果
视觉效果 嗯,圆和椭圆还不错,但如果是带圆角的矩形呢? 我们现在能做到那样了么? 史蒂芬·乔布斯 我们在第三章『图层几何学』中讨论了图层的frame,第二章『寄宿图』则讨论了图层的寄宿图.但是图层不仅 ...