QT 类及其实现效果(3)--启动画面与图像变换

一、不规则窗体
setMask()为调用它的控件增加一个遮罩,遮住的部分是不可见的。它的参数为一个QBitmap对

象,或QRegion对象。QPixmap的mask()函数是获得自身的遮罩。png格式它的透明部分就是一个

遮照。
setMask(pix.mask());
二、电子钟
先用QTime::currentTime()获得当前时间
time.toString()设置好时间格式
再用QLCDNumber的display()显示出来。
三、程序启动画面
使用类QSplashScreen支持
main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPixmap pixmap(":/splash.jpg");
    QSplashScreen splash(pixmap);
    splash.show();
 //   app.processEvents();

    MainWindow window;
    window.show();
    splash.finish(&window);
    return app.exec();
}
调用processEvents()使程序在显示启动画面的同时仍能响应鼠标等其它事件。
QSplashScreen类的finish()函数,表示在主窗体对象初始化完成后,结束启动画面
四、打印
 打印文字
void PrintText::slotPrint ()
{
 QPrinter printer;    
    QPrintDialog printDialog(&printer, this);
    if (printDialog.exec())
    { 
  QTextDocument *doc = contentTextEdit->document();
  doc->print(&printer);
 }
}
五、打印图像
void PrintImage::slotPrint ()
{
 QPrinter printer;    
    QPrintDialog printDialog(&printer, this);
    if (printDialog.exec())
    {
        QPainter painter(&printer);
        QRect rect = painter.viewport();
         QSize size = image.size();
        size.scale(rect.size(), Qt::KeepAspectRatio);
        painter.setViewport(rect.x(), rect.y(),size.width(), size.height());
        painter.setWindow(image.rect());
        painter.drawImage(0, 0, image);
    }
}
六、图像的缩放与旋转
 放大操作:
 QMatrix martix;
 martix.scale (2,2); 
 img=img.transformed(martix);
 imageLabel->setPixmap (QPixmap::fromImage(img));
 resize(img.width(),img.height());
 缩小操作:
 QMatrix martix;
 martix.scale(0.5,0.5); 
 img=img.transformed(martix);
 imageLabel->setPixmap (QPixmap::fromImage(img));
 resize(img.width(),img.height());
 旋转操作:
 QMatrix martix;
 martix.rotate(90); 
 img=img.transformed(martix);
 imageLabel->setPixmap (QPixmap::fromImage(img));
 resize(img.width(),img.height());
 垂直径向
 img=img.mirrored(false,true);
 imageLabel->setPixmap (QPixmap::fromImage(img));
 resize(img.width(),img.height());
 水平径向
 img=img.mirrored(true,false);
 imageLabel->setPixmap (QPixmap::fromImage(img));
 resize(img.width(),img.height());

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值