Qt日记(2)-360新版特性界面实现(2)

1.UI的结构
开始画图形界面,首先确定UI的大小,找到360新版特性界面的皮肤,可以看到:
4个不同的页面的像素为:680 * 370
而最顶层的一层透明页面像素为:680 * 372
如图:
QSize(680, 370):

QSize(680, 372):

现在可以确定下来,UI的大小为(680, 372);但4个页面只在370个像素空间中运动,最上面空余的为透明区域,其中在X轴(20-100)的矩形区域,为玻璃效果的区域,这些均为图片贴出。下面给个示意图:

在图中,2个像素空间中,红色区域使用Qt中的setMask函数来遮掩,绿色矩形区域为要显示的图片部分,此为玻璃效果。
所以剩下的所有控件均活动在矩形:点(0, 2) -> 点(680, 372)空间中。

在这张图中,画出了UI的设计框架,具体还是根据程序进行调整最佳位置。

2.画出最基本的背景图
只需重新实现QWidget的paintEvent事件,就可以达到上述所说的效果:
void Preview360::paintEvent(QPaintEvent *)
{
    QBitmap bitmap(this->size());
    QPainter painter(&bitmap);
    painter.fillRect(bitmap.rect(), Qt::white);
    painter.setBrush(QColor(0, 0, 0));
    //填充一个以圆弧为4个角的矩形,使窗体的四个角变成圆弧
    painter.drawRoundedRect(QRect(0, 2, this->width(), this->height()-2), 5, 5);
    //画出(0, 2) -> (2, 100)区域
    painter.drawRoundedRect(QRect(20, 0, 120-20, 2), 2, 2);
    setMask(bitmap);
}

代码很简单,关键在于set
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值