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();
}

				
时间: 2024-10-22 16:03:42

QT第二天学习的相关文章

Qt之WebKit学习之QWebView显示网页与google地图

目录 一:Qt通过地址显示网页 二:Qt调用setHtml方法加载html格式的网页,以加载google地图插件为例. 一.Qt显示网页只要三步 1) 新建QWebView对象:QWebView *view = new QWebView(this); 2) 调用setUrl或load函数设置要显示的网页地址,如load("http://www.baidu.com"); 必须以http://开头: 3)调用show函数显示. 完整代码: webview.h中: #ifndef WEBVI

20155336 2016-2017-2《JAVA程序设计》第二周学习总结

20155336 2016-2017-2 <JAVA 程序设计>第二周学习总结 教材学习内容 1: GIT版本检测 2: JAVA中基本类型 整数 字节 浮点数 字符 布尔(▲) 通过API可以得知各个类型可存储的数值范围 public class Range {public static void main(String[] args){ //byte.short.int.long的范围 System.out.printf("%d~%d%n", Byte.MIN_VALU

20145301第二周学习总结

20145301第二周学习总结 教材学习内容总结 3.1 类型.变量与运算符 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节,double 8字节 字符 char 2字节(包括字母.汉字) 布尔 boolean 不用在意它的存储空间(只有true/false) 注释 // 单行注释,/ / 多行注释 下图为各类型范围: 常量定义 final加在定义类型之前,表示定义的该变量将不能改变其值,如 final int a=10; 局部变量

20145326《Java程序设计》第二周学习总结

20145326<Java程序设计>第二周学习总结 教材学习内容总结 本周学习教材第三章,本章主要讲述了java语言中的一些基础语法,java是个支持面向对象的程序语言,但在正式进入面向对象支持语法的探讨前,对于类型.变量.运算符.流程控制等,这些各种程序语言都会有的基本语法元素,还是要有一定的基础.虽然各种程序语言都有这些基本语法元素,但千万别因此而轻忽它们,因为各种程序语言都有其诞生的宗旨与演化过程,对这些基本语法元素,也就会有其独有的特性. 1. 类型 在java的世界中,并非每个东西都

2017面向对象程序设计(Java)第二周学习总结

2017面向对象程序设计(Java)第二周学习总结 直系学妹学弟们好!额...不要问我为什么把学妹放前面,我也不知道!我只是你们和蔼可亲的学长一枚而已.也不要问为什么是第二周学习总结而不是第一周,因为第一周学长正在家里吃西瓜吹空调.好了,闲言少叙.我先为你们介绍一下助教的职责,而后再对你们的学习情况进行总结! 身为你们本学期Java课程的助教...之一,我的任务是:指导你们学习,批改我所负责学习小组的实验作业.阅读博文并回复.其他学习小组会有另外三位助教负责.由于我们每周五都会汇总你们的情况,其

SHELL第二课学习笔记

SHELL第二课学习笔记 A.脚本规范申明信息: #!bin/bash #Date 14:00 2014-1-30 #Author xiaoping #Mail [email protected] #Function: Thsi scrits funcion is .... #version 1.1 ~ B.注意点: a.成对内容一次写出来 {}.[].''.``.""# b.[]中括号两端需要空格 c.流程控制语句一次性写完格式 d.vi多行缩进 按v进入visual状态,选择多行,

20145311 《信息安全系统设计基础》第二周学习总结

20145311 <信息安全系统设计基础>第二周学习总结 教材学习内容总结 重新学习了一下上周的一部分命令:grep main wyx.c(grep的全文检索功能)ls > ls.txt :ls内容输出到文本find pathname -mtime -n/+nfind -size -n/+n (find的功能还是比较强大) 简单地学习了一下vim编辑器,跟着vimtutor简单地学了一些,在linux bash中使用vim能够极大地提高效率, vim的用法比较多,只学习了其中简单的一部分

JDBC第二次学习

脑子太笨,必须得记录下来一些文字,方便回来查询. 这是我的第二次学习JDBC的笔记,看的是传智播客——李勇老师的JDBC系列,已看到第23集. 分析在实际项目中该如何应用JDBC 一个简单用户相关的数据访问层 J2EE三层架构简介:表示层 .业务逻辑层.数据访问层,三层之间用接口隔离. 定义domain对象User,定义存取用户的接口. 用JDBC实现接口. 用配置文件(properties)和反射实现与具体类的耦合. 用图来表示: 在真实的项目开发中,我们能不能返回ResultSet对象呢?

201671010117 2016-2017-2 《Java程序设计》Java第二周学习心得

Java第二周学习心得 这一周老师在周四进行了课堂测验,完全出乎我的意料,我以为老师会在前两周上课讲一下,由于我在课前没有好好准备,反转课堂来的有的措手不及,那些题很多很多都不会,也错了很多,班上有很多表现很好的同学,他们课前准备充分,在课堂上完全没有任何压力,我也意识到了我课前没有花大量时间看书的严重性,所以我下课便去看第三章了,以后也一定要好好看书,找出不懂得问题,课上也要认真向其他优秀同学学习,不懂的问题也要想办法解决. 今天写了PPT上的任务1-9,着实也遇到了很多不会的问题,像是最后的