3 按钮控件常用API
创建按钮 QPushButton *pBtn = new QPushButton;
设置父窗口 SetParent(this);
设置按钮文本 SetText("连接");
设置按钮位置 Move(宽,高);
设置按钮大小 resize(宽,高);
窗口常用API
显示窗口 Show
设置窗口标题 SetWindowTitle
设置窗口固定大小 SetFixedSize
4 对象树
当创建的对象在堆区中时,如果对象指定的父亲(该父亲与继承时的父亲不是一个概念)的父类(或者父类的父类)是QObject时,可以不用考虑释放的问题。对象树机制回负责释放。
释放是先释放儿子,再释放父亲。但是无法测试。因为释放时是先调用父亲的析构函数,父亲的析构函数返回前再调用儿子的析构函数(该机制不需要用代码实现)。
在QT中大胆使用New创建对象并且建议在创建的时候直接指定其父亲
5 Qt中的坐标:
左上角为原点(0,0)
水平为X轴,右方为正
竖直为Y轴,下方为正
6 信号和槽
链接函数(连接信号和槽)
函数名:connect
入参:
信号的发送方
发送的信号(函数地址)
信号的接收方
信号处理函数(这个函数叫槽)
示例:点击按钮关闭窗口
connect(pBtn,&QPushButton::clicked,this,&MyWidget::close);
7 自定义信号
定义信号
在信号发送方的signals下声明信号函数。信号函数的格式:返回值为void,可以有参数也没参数(支持重载)
信号函数只需要声明不需要实现
定义槽
在信号接收方的public slots下声明槽函数。槽函数格式:返回值void,可以有参数也可以没有参数(支持重载)
槽函数需要声明也需要实现
连接信号和槽
connect(信号发送方地址,信号函数地址,信号接收方地址,槽函数地址);
发送信号:
emit 信号函数();
信号和槽重载
当信号和槽出现重载时,连接时需要使用函数指针指明对应的信号和槽。
示例:void(CStudent:: *pTreat)(QString) = &CStudent::Treat;
QString型数据打印
QString型数据打印出来会带双引号"",如果想取消双引号需要将QString转换为char *型数据。方法为:strData.toUtf8().constData();
扩展:
信号可以连接信号
一个信号可以同时连接多个槽函数,多个信号可以同时连接
信号和槽函数的参数类型必须一一对应
信号和槽函数的参数个数,可以不一致,但是信号函数的参数不能比槽函数的参数少。且类型必须一一对应。
信号可以断开。断开方法为disconnect(信号发送方,信号函数地址,信号接收方,槽函数地址);
4版本之前的信号和槽的连接方式
connect(信号发送方,SIGNAL(信号),信号接收方,SLOT(槽函数));
示例:connect(zt,SIGNAL(Hungry(strData)),st,SLOT(strData));
优点:参数直观,缺点:不做类型检查。类型不匹配时编译时不报错,运行时功能不正常(入该连接不生效)
菜单栏
菜单栏最多只有一个。
创建菜单栏: QMenuBar *pMenuBar = menuBar();
添加到窗口中: setMenuBar(pMenuBar);
添加菜单:QMenu *pFileMenu = pMenuBar->addMenu("文件");
菜单之间增加分界线:pMenuBar->addSeparator();//未生效
在“文件”菜单中增加菜单项: QAction *pNewAction = pFileMenu->addAction("新建");
菜单项之间增加分界线:pFileMenu->addSeparator();
工具栏
工具栏可以有多个
创建工具栏: QToolBar *pToolBar = new QToolBar(this);
添加到窗口中:addToolBar(Qt::LeftToolBarArea,pToolBar);