QPainter 绘图
- 绘图事件 void paintEvent()
- 声明一个画家对象 QPainter painter(this) this指定绘图设备
- 画线,画圆,画矩形,画文字
- 设置画笔QPen 设置画笔宽度、风格
- 设置画刷QBrush 设置画刷 风格
//绘图事件 void Widget::paintEvent(QPaintEvent *){ //实例化画家对象 this指定的是绘图的设备 QPainter painter(this); //设置画笔 QPen pen(QColor(255,0,0)); //设置画笔宽度 pen.setWidth(3); //设置画笔风格 pen.setStyle(Qt::DotLine); //让画家 使用这个笔 painter.setPen(pen); //设置画刷 QBrush brush(Qt::cyan); //设置画刷风格 brush.setStyle(Qt::Dense7Pattern); //让画家使用画刷 painter.setBrush(brush); //画线 painter.drawLine(QPoint(0,0),QPoint(100,100)); //画圆 painter.drawEllipse(QPoint(100,100),50,50); // 矩形 painter.drawRect(QRect(20,20,50,50)); //画文字 painter.drawText(QRect(10,200,200,50),"好好学习,天天向上");
QPainter高级设置
- 抗锯齿 效率低 painter.setRenderHint(QPainter::Antialiasing);
- 对画家进行移动 painter.translate(100,0);
- 保存状态 save
- 还原状态 restore
- 如果想手动调用绘图事件 利用update
- 利用画家画图片 painterdrawPixmap(x,y,QPixmap(www))
-
//高级设置 QPainter painter(this); painter.drawEllipse(QPoint(100,50),50,50); //设置抗锯齿能力 效率较低 painter.setRenderHint(QPainter::Antialiasing); painter.drawEllipse(QPoint(200,50),50,50); //画矩形 painter.drawRect(QRect(20,20,50,50)); //移动画家 painter.translate(100,0); //保存画家状态 painter.save(); painter.drawRect(QRect(20,20,50,50)); painter.translate(100,0); //还原画家保存状态 painter.restore(); painter.drawRect(QRect(20,20,50,50)); //利用画家画资源图片 QPainter painter(this); posX+=20; //如果超出了屏幕 从0开始 if(posX > this->width()) { posX = 0; } painter.drawPixmap(posX,0,QPixmap(":/图标/www.png"));
QPaintDevice绘图设备
- QPixmap QImage QBitmap(黑白色) QPicture QWidget
- QPixmap 对不同平台做了显示优化
- QPixmap pix(300,300)
- Pix.fill(填充颜色)
- 利用画家往 pix 上画画 QPainter painter(& pix)
- 保存 pix.save(“路径”)
- QImage 可以对像素进行访问
- 使用和QPixmap差不多 QImage img(300,300,QImage::Format_RGB32);
- 其他流程和QPixmap一样
- 可以对像素进行修改img.setPixel(i,j,value);
- QPicture 记录和重现绘图指令
- QPicture pic
- painter.begin(&pic);
- 保存 pic.save(任意后缀名)
- 利用 画家 重现 painter.drawPicture(0,0,pic);
-
//Pixmap绘图设备 专门为平台做了显示的优化 QPixmap pix(300,300); //填充颜色 pix.fill(Qt::white); //声明画家 QPainter painter(&pix); painter.setPen(QPen(Qt::green)); painter.drawEllipse(QPoint(150,150),100,100); //保存 pix.save("E:\\pix.png");
//QImage绘图设备 可以对像素进行访问 QImage img(300,300,QImage::Format_RGB32); img.fill(Qt::white); QPainter painter(&img); painter.setPen(QPen(Qt::blue)); painter.drawEllipse(QPoint(150,150),100,100); //保存 img.save("E:\\img.png"); //绘图事件 void Widget::paintEvent(QPaintEvent *) { QPainter painter(this); //利用QImage 对像素进行修改 QImage img; img.load(":/图标/www.png"); //修改像素点 for(int i = 50; i<100; i++){ for (int j = 50;j < 100; j++) { QRgb value = qRgb(255,0,0); img.setPixel(i,j,value); } } painter.drawImage(0,0,img); }
//QPicture 绘图设备 可以记录和重现绘图指令 QPicture pic; QPainter painter; painter.begin(&pic); //开始往pic上画 painter.setPen(QPen(Qt::cyan)); painter.drawEllipse(QPoint(150,150),100,100); painter.end(); //结束画画 //保存磁盘 pic.save("E:\\pic.zt"); QPainter painter(this); //重现QPicture绘图指令 QPicture pic; pic.load("E:\\pic.zt"); painter.drawPicture(0,0,pic);
QFile对文件进行读写操作
- QFile进行读写操作
- QFile file(path 文件路径)
- 读
- file.open(打开方式) QIODevice::ReadOnly
- 全部读取 file.readAll() 按行读 file.readLine() attend() 判断是否读到文件尾
- 默认支持编码格式 utf-8
- 利用编码格式类指定格式 QTextCodec * codec = QTextCodec::codecForName("gbk");
- ui->textEdit->setText(codec->toUnicode(array));
- 文件对象关闭close
4.写
- file.open(QIODevice::Append); //用追加的方式写
- file.write(“内容”)
- file.close 关闭
//点击读取文件按钮 弹出文件对话框 connect(ui->pushButton,&QPushButton::clicked,[=](){ QString path = QFileDialog::getOpenFileName(this,"打开文件","C:\\Users\\asus\\Desktop"); //将路径放入到lineEdit中 ui->lineEdit->setText(path); //编码格式类 //QTextCodec * codec = QTextCodec::codecForName("gbk"); //读取内容 放到 textEdit中 //QFile默认支持的格式是utf-8 QFile file(path); //参数就是读取文件的路径 //设置打开方式 file.open(QIODevice::ReadOnly); //QByteArray array = file.readAll(); QByteArray array; while(!file.atEnd()){ array +=file.readLine(); } //array = file.readLine();//按行读 //将读取到的数据 放入textEdit中 ui->textEdit->setText(array); //ui->textEdit->setText(codec->toUnicode(array)); //对文件对象进行关闭 file.close(); //进行写文件 file.open(QIODevice::Append); //用追加的方式写 file.write("啊啊啊啊"); file.close(); }); }
QFileInfo 读取文件信息
- QFileInfo info(路径)
- qDebug() << "大小:" <<info.size() << "后缀名:" << info.suffix() << "文件名称" << info.filePath();
- qDebug() << "创建日期" << info.created().toString("yyyy/MM/dd hh:mm:ss");
- qDebug() << "最后修改日期:" << info.lastModified().toString("yyyy/MM/dd hh:mm:ss");
-
//QFileInfo 文件信息类 QFileInfo info(path); qDebug() << "大小:" <<info.size() << "后缀名:" << info.suffix() << "文件名称" << info.filePath(); qDebug() << "创建日期" << info.created().toString("yyyy/MM/dd hh:mm:ss"); qDebug() << "最后修改日期:" << info.lastModified().toString("yyyy/MM/dd hh:mm:ss");