一.如何使用c++方式编写qt的代码
1.类的实例就是一个带有组件的父窗口 自己的类就要
继承QWidget 或者 子类 QDialog QMainWindow
2.窗口中的组件 都要做为自定义类的成员变量
3.类的头文件 和 实现文件 要分离实现
4.如果类中有自定义的信号 和槽函数 则需要在头文件中
出现一个宏 Q_OBJECT
二.信号和槽
2.1信号和槽是qt编程的基础 和 核心 可以关联两个毫不相关
的对象。
2.2当信号和槽绑定时 没当发射 或者 触发这个信号时 就自动
调用这个槽函数。
2.3信号和槽函数的声明
public slots:
void show();
public:signals:
void mySig();
2.4如果类中有自定义的信号和槽需要声明
一个宏 Q_OBJECT
2.5 连接信号 和 槽 使用
QObject::connect(const QObject* sender,
const char* signal,
const QObject* reciver,
const char* method);
QObject::connect(a,SIGNAL(t()),b,SLOT(g()));
2.6 断开信号 和 槽的连接
QObject::disconnect(const QObject* sender,
const char* signal,
const QObject* reciver,
const char* method);
2.7 一个信号 可以连接到多个槽
QObject::connect(a,SIGNAL(t()),b,SLOT(g()));
QObject::connect(a,SIGNAL(t()),c,SLOT(gg()));
QObject::connect(a,SIGNAL(t()),d,SLOT(ggg()));
2.8 一个槽 可以连接多个信号
QObject::connect(a,SIGNAL(t()),b,SLOT(g()));
QObject::connect(c,SIGNAL(m()),b,SLOT(g()));
2.9 一个信号 和 连接到 另外一个信号
当一个信号 发射之后 会触发另外一个信号
这个信号可以传递下去
QObject::connect(a,SIGNAL(t()),b,SIGNAL(h()));
QObject::connect(b,SIGNAL(h()),c,SLOT(cs()));
2.10 当删除对象时 和 这个对象关联的所有连接
就会自动断开。
2.11 是不是任意的信号 可以 和任意的槽进行连接?
不是。
信号和槽 连接时 要有相同的参数类型 相同的参数顺序
相同的参数个数。
信号 和 槽 如果带参 需要出现参数的类型。
2.12 想让任意的信号 和 任意的槽进行连接?
直接在自定义的槽函数 调用 最终的槽函数
QPushButton clicked()
QLabel setText(QString)
自定义槽函数 结合自定义信号完成
(线程中的数据 一般是通过信号通知线程外的访问)
三.设计器的使用
designer 可见即所得的编辑器
设计界面 把窗口部件盒中的组件 拖拽到 合适位置
鼠标可以改变组件的位置和 大小
选中组件 可以复制 可以删除
使用方向键 改变组件的位置 每次 10px
ctrl+方向键改变组件的位置 每次 1px
双击改变文字
shift + 方向键 改变组件的大小 每次 10px
ctrl+shift +方向键 改变组件的大小 每次 1px
通过属性编辑器(ctrl+i) 控制组件的相关属性
对象名 以及其它显示属性
对象察看器 查看对象之间的组织关系 确定对象名和
对象的类型。
最终得到界面文件 ***.ui
四.如何使用 ui文件
4.1 把ui文件转换成 .h 文件
uic jfq.ui -o jfq.h
4.2 jfq.h 就是代表界面的文件
4.3 使用生成的jfq.h
定义新的.h 文件 使用jfq.h 中的类
做界面类的指针
实现这个头文件
4.4 创建界面 加载界面
4.5 如果实现功能
要访问界面中的组件 需要通过 ui访问