Qt初学笔记-3

组件运用

1、坐标系统
2、绘图
QPixmap pix(300,300);
    pix.fill(Qt::white);

    QPainter painter(&pix);
    painter.drawEllipse(QPoint(150,150),100,100);
pix.save("E:/Qt/untitled1/a.png");
上述代码绘出来的图片将被保存在所在位置。
    QImage img(300,300,QImage::Format_RGB32);
    img.fill(Qt::white);
    QPainter painter(&img);
    painter.drawEllipse(QPoint(150,150),100,100);
img.save("E:/Qt/untitled1/b.png");
上述代码绘出来的图片将被保存在所在位置。

    QPicture pic;
    QPainter painter(&pic);
    painter.begin(&pic);
    painter.drawEllipse(QPoint(150,150),100,100);
    painter.end();
pic.save("E:/Qt/untitled1/c.png");
如果不开启录像begin,将会导致图片为空(没有图片被保存),(本图片不能被正常打开)。
void Widget::paintEvent(QPaintEvent *event)
{
    QPicture pic;
    pic.load("E:/Qt/untitled1/c.png");
    QPainter painter(this);
    painter.drawPicture(0,0,pic);
}
上述代码是重现Picture所录像的图片。

repainter()函数和update()函数手动触发绘图事件。

三态交互:
void CMouse::mousePressEvent(QMouseEvent *e)
{
    m_state=CMouse::Estate::Press;
    QPushButton::mousePressEvent(e);
    //update();
}

void CMouse::mouseReleaseEvent(QMouseEvent *e)
{
    m_state=CMouse::Estate::Normal;
    QPushButton::mouseReleaseEvent(e);
}

void CMouse::enterEvent(QEvent *event)
{
    m_state=CMouse::Estate::Enter;
    //QPushButton::enterEvent(event);
}

void CMouse::leaveEvent(QEvent *event)
{
    m_state=CMouse::Estate::Leave;
    QPushButton::leaveEvent(event);
}

painter.drawEllipse(0,0,this->width()-1,this->height()-1);//超出界限会被其它图像覆盖
3、文件
3、1文件基础
//开始读文件
//1.创建文件对象
QFile file(filepath);
//2.打开文件
file.open(QIODevice::ReadOnly);
//3.读取文件内容,存储到某个对象
QByteArray content=file.readAll();
//把信息转换成gbk编码
QTextCodec *codec=QTextCodec::codecForName("GBK");
QString str=codec->toUnicode(content);

//4.把读取的信息设置显示框
//ui->plainTextEdit->setPlainText(content);
ui->plainTextEdit->setPlainText(str);
//5.关闭文件
file.close();
4、通信(TCP/IP,UDP)
4、1 TCP
4、2UDP
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    udpsocket=new QUdpSocket(this);
    setWindowTitle("port:6666");

    quint16 port=6666;
    //绑定端口号,如果要接收信息就需要绑定端口号
    udpsocket->bind(port);

    connect(udpsocket,&QUdpSocket::readyRead,[=]()mutable{
        char buf[1024]="";
        QHostAddress host;
        quint64 len=udpsocket->readDatagram(buf,sizeof(buf),&host,&port);
        if(len>0)
        {
            QString str=QString("[%1,%2]%3").arg(host.toString()).arg(port).arg(buf);
            ui->textEdit->append(str);
        }
    });
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_pushButton_clicked()
{
    QString ip=ui->lineEdit->text();
    quint16 port=ui->lineEdit_2->text().toInt();
    QString str=ui->textEdit_2->toPlainText();

    udpsocket->writeDatagram(str.toUtf8(),QHostAddress(ip),port);
    ui->textEdit_2->clear();
}

void Widget::on_pushButton_2_clicked()
{
    this->close();
}

UDP在同一端口号和同一地址时,将不能发消息。

udpsocket->bind(port,QUdpSocket::ShareAddress | QUdpSocket::ReuseAddressHint);这个函数第一个参数表示运行其它的客户端连接到相同端口,第二个参数表示可以连接相同的地址和连接不上时重新连接。
显示类

1、1QStringList
它定义的变量str,str<<“Math”<<“Chinese”<<“English”;中间自动添加逗号(,)分隔符。

1、2QDebug

它可使用qDebug()函数打印,包含C风格打印和C++打印。

购物商城项目采用PHP+mysql有以及html+css jq以及layer.js datatables bootstorap等插件等开发,采用了MVC模式,建立一个完善的电商系统,通过不同用户的不同需求,进行相应的调配和处理,提高对购买用户进行配置….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值