Qt_day1
1. 项目框架
#include <QApplication>
int main(int argc,char *argv[])
{
QApplication app(argc,argv);
return app.exec();
}
2. 窗口类常见的成员函数
show() ----------------- 显示窗口
setText() -------------- 设置显示的文字
move(横坐标,纵坐标) ----- 设置窗口显示的左上角的坐标(父窗口)
resize(宽,高) ---------- 设置窗口大小
setWindowTitle()-------- 设置窗口标题
setFont(QFont &f) --------- 设置字体(QFont 字体类)
setPalette(QPalette &p) --- 设置调色板(QPalette 调色板类)
setColor ----- 设置颜色 (QColor 颜色类)
(给某个部件设置颜色:先定义颜色对象,再定义调色板对象,把颜色对象传给调色板对象,最后把调色板对象传给要修改颜色的部件)
setCursor(QCursor &c) ----- 设置鼠标参数(QCursor 鼠标/光标类)
eg1. 成员函数练习
#include "mywidget.h"
#include <QFont>
#include <QPalette>
#include <QColor>
#include <QCursor>
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
{
lab1 = new QLabel("你好",this);
lab2 = new QLabel("再见",this);
this->resize(1024,768);
lab1->move(100,100);
lab2->move(240,200);
lab1->resize(300,50);
QFont f1("Times",16,16,true);
lab1->setFont(f1);
QFont f2("Times",32,32);
lab2->setFont(f2);
QColor c(0,0,255);
QPalette p;
p.setColor(QPalette::WindowText,c);
lab1->setPalette(p);
c.setRgb(255,0,0);
p.setColor(QPalette::WindowText,c);
lab2->setPalette(p);
QCursor cs(Qt::CrossCursor);
lab2->setCursor(cs);
}
MyWidget::~MyWidget()
{
}
3. 信号与槽机制
1 图解
1.信号和槽用于对象之间的通信,信号可以由某种动作触发,也可以直接由代码触发
2.槽也叫槽函数,当完成了信号和槽的连接,一旦触发信号,自动调用连接的槽函数
3.信号和槽的连接是动态,对象释放之后断开所有的信号和槽
4.代码触发信号的语法:
emit 信号; //信号的格式就是函数声明的格式,但是无需实现
2 连接
connect(发送信号对象的地址,信号,接收信号对象的地址,槽函数);
connect(发送信号对象的地址,SIGNAL(信号),接收信号对象的地址,SLOT(槽函数));
connect(发送信号对象的地址,信号,接收信号对象的地址,槽函数);
connect(发送信号对象的地址,信号,接收信号对象的地址,[&](){
});
eg2. 练习:实现一个窗口,有一个标签和两个按钮。按下第一个按钮将label显示文字放大为32X32,松开第一个按钮时恢复原状。点击第二个按钮文字颜色在蓝色和红色之间切换。
#include "mywidget.h"
#include <QFont>
#include <QPalette>
#include <QColor>
mywidget::mywidget(QWidget *parent)
: QWidget(parent)
{
lab = new QLabel("你好",this);
bt1 = new QPushButton("改变文字大小",this);
bt2 = new QPushButton("改变文字颜色",this);
this->resize(400,240);
lab->move(150,30);
lab->resize(140,50);
bt1->move(80,100);
bt1->resize(100,30);
bt2->move(190,100);
bt2->resize(100,30);
QFont f("宋体",16,16);
lab->setFont(f);
QObject::connect(bt1,&QPushButton::pressed,this,[&](){
QFont f1("宋体",32,32);
lab->setFont(f1);
});
QObject::connect(bt1,&QPushButton::released,this,[&](){
QFont f2("宋体",20,20);
lab->setFont(f2);
});
QObject::connect(bt2,&QPushButton::clicked,this,&mywidget::set_color);
}
mywidget::~mywidget()
{
}
void mywidget::set_color()
{
if(flag == 0)
{
QColor red(255,0,0);
QPalette p2;
p2.setColor(QPalette::WindowText,red);
lab->setPalette(p2);
flag=1;
}else
{
QColor blue(0,0,255);
QPalette p1;
p1.setColor(QPalette::WindowText,blue);
lab->setPalette(p1);
flag=0;
}
}
注意:
1.只有类型相同的信号和槽才能连接
2.一个信号可以连接多个槽,一个槽也可以连接多个信号
3 断开
断开信号和槽的连接
QObject::disconnect(参数和connect一样);
//对象销毁时自动断开信和槽,该函数极少使用
4 信号的传递
信号也可以连接信号。一旦连接,前一个信号发送会自动触发后一个信号,信号可以通过该方式传递下去。
语法:
QObject::connect(发送信号对象的地址,信号,接收信号对象的地址,信号);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)