QT 绘画Square Shapes & Round Shapes

25 篇文章 1 订阅

本文内容翻译原文来自《Foundations of Qt Development》第7章 DRAWING AND PRINTING,作者:Johan Thelin。

Square Shapes

你可以画出像图7-8那样的方角矩形或圆角矩形。使用的方法所需参数可以是矩形QRect或者矩形左上角坐标(x,y)再加上宽和高。这两种方法分别是drawRectdrawRoundRect.

清单7-5展示了怎样画方角矩形和圆角矩形。前两种方法直接用坐标绘画,坐标用x, y, w, h来表示,其中x, y表示左上角顶点位置,w, h表示矩形的宽和高。

注意:如果宽或高小于0,那么x,y表示的顶点不是矩形的左上角。

后两个矩形依据给出的QRect参数绘画,该参数保存有矩形的坐标值。在drawRoundRect函数调用中,矩形参数rect被直接使用,而在drawRect函数调用中,使用了rect下移45个像素的新矩形。这是使用translated(int x, int y)实现的,translated方法返回了一个同等大小,但位置发生相对移动的矩形,移动的方向和距离由向量(x,y)指明。
绘画的结果在图片7-9中。

Listing 7-5.在pixmap中画矩形

    QPixmap pixmap( 200, 100 );
    pixmap.fill( Qt::white );
    QPainter painter( &pixmap );
    painter.setPen( Qt::black );
    painter.drawRect( 10, 10, 85, 35 );
    painter.drawRoundRect( 10, 55, 85, 35 );
    QRect rect( 105, 10, 85, 35 );
    painter.drawRoundRect( rect );
    painter.drawRect( rect.translated( 0, 45 ) );
在测试之中,我是这样用那段代码的:
void Rect::paintEvent(QPaintEvent *event)
{
    QPainter painter( this );
    painter.setPen( Qt::black );
    painter.drawRect( 10, 10, 85, 35 );
    painter.drawRoundRect( 10, 55, 85, 35 );
    QRect rect( 105, 10, 85, 35 );
    painter.drawRoundRect( rect );
    painter.drawRect( rect.translated( 0, 45 ) );
}

Round Shapes

圆和椭圆都可以使用drawEllipse方法画出(见图7-10)。该方法需要矩形或(x, y, w, h)作为参数(就像画矩形一样)。为了画出一个圆,你需要确保宽度和高度是等值的。

画椭圆很有趣,因为你可以仅仅画整个图案的一部分。Qt可以画三个部分(见图7-11):

  • drawArc画一段弧 —— 圆的一部分。
  • drawChord画圆形的一部分 —— 这一部分是封闭的,由弦和弦外的弧包围。
  • drawPie画饼图 —— 椭圆的一部分。
  • 所有画椭圆部分图案的方法都需要一个矩形作为参数(就像drawEllipse方法)。然后这些方法需要一个开始的角度以及所画部分占整个椭圆的跨度。该角度值和跨度用整数表示,是一个度的16分之1,这意味着5760个单位是一个完整的圆。0度指向3点钟的方向,跨度为正向代表着逆时针方向。

    清单7-6展示了怎样画椭圆和弧(结果显示在图7-12)。就像你看到的,图案的比例发生了变化,最右边的椭圆与弧是圆与圆的一部分(外围矩形的宽等于高)。
    如同代码展示的那样,可以通过坐标或QRect指明椭圆和弧所在的外围矩形。
    给出QT度数时,我使用了16的倍数将实际的度数改装成QT所期望的整数。

    Listing 7-6 画椭圆与弧

    QPixmap pixmap( 200, 190 );
    pixmap.fill( Qt::white );
    QPainter painter( &pixmap );
    painter.setPen( Qt::black );
    painter.drawEllipse( 10, 10, 10, 80 );
    painter.drawEllipse( 30, 10, 20, 80 );
    painter.drawEllipse( 60, 10, 40, 80 );
    painter.drawEllipse( QRect( 110, 10, 80, 80 ) );
    painter.drawArc( 10, 100, 10, 80, 30*16, 240*16 );
    painter.drawArc( 30, 100, 20, 80, 45*16, 200*16 );
    painter.drawArc( 60, 100, 40, 80, 60*16, 160*16 );
    painter.drawArc( QRect( 110, 100, 80, 80 ), 75*16, 120*16 );

要在Ubuntu上安装Qt Quick Shapes模块,你可以按照以下步骤操作: 1. **打开终端**:首先,通过快捷键Ctrl+Alt+T或在应用程序搜索栏中输入“Terminal”打开终端。 2. **更新包列表**:确保你的系统是最新的,运行命令: ``` sudo apt update ``` 3. **安装Qt开发工具**:如果尚未安装Qt开发工具(如Qt Creator),你可以安装基础版本的Qt5开发工具: ``` sudo apt install qtbase5-dev-tools ``` 或者选择安装整个Qt5库(可能会更大): ``` sudo apt install qt5-default ``` 4. **安装Qt Creator**(如果你还没有): ``` sudo apt install qtcreator ``` 5. **安装Qt 5.15+** (推荐版本),因为它可能包含了QtQuick.Shapes模块: ``` sudo add-qt595 sudo apt update sudo apt install qt595-default ``` 或者替换版本号,例如 `qt5105`、`qt5115` 等等。 6. **安装QtQuick.Shapes模块**: 对于Qt 5.15以上版本,QtQuick.Shapes应该已经包含在内了。如果你需要特定版本的QtQuick.Shapes,可以在Qt Creator中直接查找和安装插件,或者在终端里查找`qtdeclarative5-quickshapes`包并安装: ``` sudo apt search qtdeclarative5-quickshapes sudo apt install <package_name_from_search_result> ``` 7. **验证安装**:启动Qt Creator,新建一个Qt Quick应用项目,检查能否正常使用QtQuick.Shapes提供的元素和功能。 注意:如果上述步骤仍无法解决问题,你可能需要访问Qt官方文档或社区论坛寻求更具体的帮助,因为不同的Ubuntu版本可能有不同的安装步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值