窗体
窗体是指用于创建用户界面的一系列可是元素,如:按钮,菜单,滚动条,列表框,消息框等。
Qt提供了一系列的标准窗体,使用这些窗体,可以为应用程序创建图形用户界面。QT窗体分为内建窗体和定制窗体,内建窗体是由QWidget类及其子类提供的,而制定窗体则是通过派生内建窗体并重写其虚函数来是实现的。窗体可以有任意多的子窗体,没有父窗体的叫顶层窗体,这类窗体通常在桌面环境的任务栏中有启动入口。Qt中任何一个窗体都可以作为一个顶层窗体,也可以作为一个子窗体。
内建窗体
内建窗体一般有:QLineEdit:用来输入一行文本;QcheckBox用来启用或者警用简单的独立设置;QSpinBox和QSlider用来指定数量;
QRadioButton 用来启用或者禁用互斥的设置。。。。。
制定窗体
指定窗体是指通过从QWidget或者其子类继承而来的窗体。开发人员可以开发自己的窗体和对话框。例如:
analogclock.h 文件#include <QWidget>
class AnalogClock:public QWidget
{
public:
AnalogClock(QWidget *parent=0);
protected:
void paintEvent(QPaintEvent *);
};
analogclock.cpp
#include "analogclock.h"#include <QtGui>#include <qmath.h>AnalogClock::AnalogClock(QWidget *parent):QWidget(parent){
QTimer *timer=new QTimer(this);connect(timer,SIGNAL(timeout()),this,SLOT(update()));//当调用update()时,程序会启动paintEvent();timer->start(1000);//设置定时器。每一秒中刷新一次setWindowTitle(tr("Analog Clock"));resize(200,200);//设置窗口的大小}
//重新绘制窗体函数
void AnalogClock::paintEvent(QPaintEvent *){
static const QPoint hourHand[3]={QPoint(7,8),QPoint(-7,8),QPoint(0,-40)};static const QPoint minuteHand[3]={QPoint(7,8),QPoint(-7,8),QPoint(0,-70)};QColor hourColor(127,0,127);QColor minuteColor(0,127,127);int side =qMin(width(),height());QTime time=QTime::currentTime();QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing);painter.translate(width()/2.0,height()/2.0);//画图转移到窗体中央painter.scale(side/200.0,side/200.0);//painter.setPen(Qt::NoPen);painter.setBrush(hourColor);painter.save();painter.rotate(30.0*(time.hour()+time.minute()/60.0));//画图旋转30度*小时painter.drawConvexPolygon(hourHand,3);//绘制时针painter.restore();painter.setPen(hourColor);//绘制12个刻度for(int i=0;i<12;++i){painter.rotate(30.0);painter.drawLine(88,0,96,0);}painter.setPen(Qt::NoPen);painter.setBrush(minuteColor);painter.save();painter.rotate(6.0*(time.minute()+time.second()/60.0));//每一分钟转6度painter.drawConvexPolygon(minuteHand,3);painter.restore();painter.setPen(minuteColor);
//绘制60个小刻度
for(int j=0;j<60;j++){if((j%5)!=0)painter.drawLine(92,0,96,0);painter.rotate(6.0);}}
main.cpp
#include <QtGui/QApplication>#include "mainwindow.h"#include "analogclock.h"int main(int argc, char *argv[]){
QApplication a(argc, argv);AnalogClock clock;clock.show();//clock作为一个父窗体return a.exec();}