你可以使用加农炮了
在这里,我们在cannon.cpp中增加了在画布上画加农炮的代码,并且左侧slider变化时,加农炮炮口的方向随之变化。
lcdrange.h包含LCDRange类定义
lcdrange.cpp包含LCDRange类实现
cannon.h包含CannonField类定义
cannon.cpp包含CannonField类实现
main.cpp包含MyWidget和main
与上一篇代码基本相同,只贴出有改变的函数:
cannon.cpp 中,
void CannonField::paintEvent(QPaintEvent *)
{
QPainter p(this);//创建操作窗口部件的QPaonter
p.setBrush(Qt::blue);
p.setPen(Qt::NoPen);
p.translate(0, rect().bottom());//
p.drawPie(QRect(-35, -35, 70, 70), 0, 90*16);//绘制由(x,y,w,h)确定的饼图,开始角度为0,弧长为90*16(四分之一圆)
p.rotate(-angle);// 将坐标系统逆时针旋转-angle
p.drawRect(QRect(33, -4, 15, 8));//根据(x,y,w,h)画矩形
}
结果截图:
1.设置一个不同的画笔代替NoPen。
设置成红色边框:
p.setPen(Qt::red);
结果截图:
设置一个调色板的画刷。
setAutoFillBackground(true);
QPalette palette;
palette.setBrush(QPalette::Active,QPalette::Window,QBrush(Qt::darkMagenta));
setPalette(palette);
结果截图:
2.试着用“Q&uit”或者“Qu&it”作为按钮的文本来替代“&Quit”,发生了什么?
通常使用含字符’&’的字符串为按钮的显示名称,如果设置按钮的text为 “&Cancel”,Qt的编译器会将字符’&’后的’C’在显示时下方多一下划线,表明’C’为该按钮的快捷键,通过”Alt+c”操作来实现对pushButton的点击。
使用“Q&uit”或者“Qu&it”则不会有这种作用,相应的,通过“Alt+u” \ “Alt+i”实现对按钮的点击。