我用QPainter类做的一个指针钟表,12点这个位置 被放置在水平方向了,怎么改?而且如果按照水平方向来看,显示的时间就是正确的。另外时间栏和指针栏怎么样对应起来,麻烦各位大侠帮下忙啊。我知道是用信号与槽来实现,但是由于小弟刚接触QT不到一周,誰的信号,誰的槽,不太清楚,对于qt类的类型层次也不清楚,不好做了。
部分代码:
//#include“CLockWidget.h”
void ClockWidget :: paintEvent(QPaintEvent *)
{
if(s>59)s=s%60;
if(s==0)m++;
if(m>59){
m=m%60;
if(m==0)
h++;
}
if(h>11)
h=h%12;
s++;
//绘制图形
QPainter painter(this);
painter.setWindow(-30,-30,60,60);
//画表外盘
painter.save();
painter.setBrush(Qt::white);
painter.drawEllipse(QPoint::QPoint(0,0),30,30);
painter.restore();
//画时针
painter.save();
painter.rotate(30*(h%12)+m*0.5);
painter.setPen(Qt::black);
painter.drawLine(-2,0,15,0);
painter.restore();
//画分针
painter.save();
painter.rotate(m*6+s*0.1);
painter.setPen(Qt::blue);
painter.drawLine(-5,0,25,0);
painter.restore();
//画秒针
painter.save();
painter.rotate(s*6);
painter.setPen(Qt::red);
painter.drawLine(-10,0,30,0);
painter.restore();
//画时钟刻度
//大刻度
painter.save();
painter.setPen(Qt::red);
for(int i=0;i<12;++i)
{
painter.rotate(30);
painter.drawLine(28,0,30,0);
}
painter.restore();
//小刻度
painter.save();
painter.setPen(Qt::blue);
for(int j=0;j<60;++j)
{
if((j%5)!=0)
painter.drawLine(29,0,30,0);
painter.rotate(6.0);
}
painter.restore();
}
main函数
#include<QtGui>
#include<QtCore>
#include"ClockWidget.h"
int main(int argc,char **argv)
{
QApplication app(argc,argv);
QWidget *widget=new QWidget;
widget->resize(400,400);
widget->setWindowTitle("My Clock!");
QTimeEdit *timeEdit=new QTimeEdit(QTime ::currentTime(),widget);
timeEdit->setGeometry(260,260,140,20);
QLabel *label=new QLabel(widget);
label->setText("Time");
label->setGeometry(260,210,100,30);
ClockWidget *clock=new ClockWidget(widget);
clock->setGeometry(5,5,210,210);
widget->show();
return app.exec();
}
附图:现在时间5电06分 只有将水平方向看成12电,才显示正确