首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

给一些QPainter画线画表格写字之类的代码

2014-01-19 
给一些QPainter画线画表格写字等等的代码如题要一些代码 本人很菜[解决办法]#include print.h#include

给一些QPainter画线画表格写字等等的代码
如题要一些代码 本人很菜  
[解决办法]

#include "print.h"
#include "ui_print.h"

print::print(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::print)
{
    ui->setupUi(this);
    hInfo.name="张三";
    hInfo.sex="男";
    hInfo.age="18";
    hInfo.height="180";
    hInfo.weight="65";
    hInfo.ID_num="230124199608084567";
    hInfo.patient_num="2014021402";

    tInfo.Cli_diag="优良";
    tInfo.Result="阴";
    tInfo.Doctor="王某";
    QDateTime ctime;
    ctime = QDateTime::currentDateTime();
    QString ss = ctime.toString("yyyy/MM/dd");
    tInfo.Date_time=ss;

    connect(ui->b2, SIGNAL(clicked()), this, SLOT(printview()));
}

print::~print()
{
    delete ui;
}

void print::printview()
{
    QPrinter printer;
    QPrintPreviewDialog printview(&printer, this);
    printview.setMinimumSize(800,700);
    connect(&printview, SIGNAL(paintRequested(QPrinter *)),this,SLOT(printPreview(QPrinter *)));
    printview.exec();
}
void print::printPreview(QPrinter *printer)
{
    printer->setPageSize(QPrinter::A4);
//    printer->setOrientation(QPrinter::Landscape);
    QPainter painter(printer);
    int y_addvalue=14;
//    painter.drawRect(20, 10, 730, 1050); //表格矩形方框
    painter.drawLine(20,50,750,50);
    painter.drawLine(20,80,750,80);
    painter.drawLine(20,110,750,110);

 //   QFont font("Arial", 20, QFont::Bold);
    painter.setFont(QFont("Arial", 20, QFont::Bold));
    QRectF ff(20, 10, 730, 40);
//    painter.drawRect(ff); //表头矩形方框
    painter.drawText(ff, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "HUT-直立倾斜实验检查报告单");
    painter.setFont(QFont("", 16));
    painter.drawText(30,105,"身份证号");
    painter.drawText(300,105,"病例号");
    painter.drawText(470,105,"临床诊断");
    painter.drawText(30,75,"姓名");
    painter.drawText(175,75,"性别");
    painter.drawText(320,75,"年龄");
    painter.drawText(465,75,"身高    cm");
    painter.drawText(610,75,"体重    Kg");

    painter.drawRect(25,115,720,945); //下面的矩形
    painter.drawLine(25, 133, 745, 133);
    sum=0;
    for(int i=0; i<62; i++){
        sum = sum+y_addvalue;
        painter.drawLine(25, 135+sum, 745, 135+sum);
    }
    painter.drawLine(25, 154+sum, 745, 155+sum);
    painter.drawLine(25, 173+sum, 745, 173+sum);
    painter.drawLine(385, 115, 385, 1003);//中间线
    painter.drawLine(135, 115, 135, 1003);
    painter.drawLine(200, 115+20, 200, 1003);
    painter.drawLine(260, 115+20, 260, 1003);
    painter.drawLine(475, 115+20, 475, 1003);
    painter.drawLine(545, 115+20, 545, 1003);
    painter.drawLine(610, 115+20, 610, 1003);
    sum = 0;

    QRectF ff1(25, 115, 110, 18);
    painter.setFont(QFont("", 13));
    painter.drawText(ff1, Qt::AlignCenter, "步骤");
    QRectF ff2(135, 115, 250, 18);


    painter.drawText(ff2, Qt::AlignCenter, "基础倾斜试验");
    QRectF ff3(385, 115, 360, 18);
    painter.drawText(ff3, Qt::AlignCenter, "舌下含服硝酸甘油0.25mg");
    QRectF ff4(25, 133, 110, 16);
    painter.setFont(QFont("", 12));
    painter.drawText(ff4, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "时间");
    QRectF ff5(135, 133, 65, 16);
    painter.drawText(ff5, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "血压");
    QRectF ff6(200, 133, 60, 16);
    painter.drawText(ff6, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "心率");
    QRectF ff7(260, 133, 125, 16);
    painter.drawText(ff7, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "症状");
    QRectF ff8(385, 133, 90, 16);
    painter.drawText(ff8, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "用药后时间");
    QRectF ff9(475, 133, 70, 16);
    painter.drawText(ff9, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "血压");
    QRectF ff10(545, 133, 65, 16);
    painter.drawText(ff10, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "心率");
    QRectF ff11(610, 133, 135, 16);
    painter.drawText(ff11, Qt::AlignHCenter
[解决办法]
Qt::AlignBottom, "症状");
    painter.setFont(QFont("", 10));
    QRectF ff12(25, 149, 110, 14);
    painter.drawText(ff12, Qt::AlignLeft
[解决办法]
Qt::AlignVCenter
[解决办法]
Qt::AlignBottom, "平卧   倾斜");
    QRectF rect[60];
//    sum = 0;
    int n=0;
    QString str;
    for(int i=0; i<60; i++){
        n = n+1;
        sum = sum+y_addvalue;
        rect[i].setRect(25,149+sum, 110, 14);
        QString str = QString("%1").arg(n);
        painter.drawText(rect[i], Qt::AlignCenter, str);
    }
    QRectF bigff1(25, 1003, 720, 19);
    painter.setFont(QFont("", 13));
    painter.drawText(bigff1, Qt::AlignCenter, "诊断依据");
    QRectF bigff2(25, 1022, 720, 19);
    painter.drawText(bigff2, Qt::AlignLeft
[解决办法]
Qt::AlignVCenter, "注:血压单位:mmHg  心率单位:次/分 时间单位:分:     结论:HUT       性(      )");
    QRectF bigff3(25, 1041, 720, 19);
    painter.drawText(bigff3, Qt::AlignRight
[解决办法]
Qt::AlignVCenter,"医师:       日期:         ");\
    add_HeadData(&painter);
    add_TailData(&painter);
    AddData(&painter);
}

void print::add_HeadData(QPainter *painter)
{
    painter->setFont(QFont("",16));
    painter->setPen(Qt::blue);
    painter->drawText(80,75,hInfo.name);
    painter->drawText(225,75,hInfo.sex);
    painter->drawText(370,75,hInfo.age);
    painter->drawText(515,75,hInfo.height);
    painter->drawText(660,75,hInfo.weight);
    painter->setFont(QFont("",15));
    painter->drawText(115,105,hInfo.ID_num);
    painter->drawText(362,105,hInfo.patient_num);
}

void print::add_TailData(QPainter *painter)
{
    painter->drawText(580,105,tInfo.Cli_diag);
    painter->setFont(QFont("",13));
    painter->drawText(690, 1039, tInfo.Result);
    painter->drawText(550, 1058, tInfo.Doctor);
    painter->drawText(655, 1058, tInfo.Date_time);
}

void print::AddData(QPainter *painter)
{
    int add=14;
    QRectF rect_Heart[60];


    QRectF rect_Blood[60];
    sum = 0;
    int Heart, Blood;
    QString str;
    painter->setPen(Qt::black);
    painter->setFont(QFont("",10));
    for(int i=0; i<60; i++){
        Heart=180; // 调用外部心率数据
        sum = sum+add;
        rect_Heart[i].setRect(200,149+sum, 60, 14);
        QString str_Heart = QString("%1").arg(Heart);
        painter->drawText(rect_Heart[i], Qt::AlignCenter, str_Heart);

        Blood=80;// 调用外部血压数据
        rect_Blood[i].setRect(135,149+sum, 65, 14);
        QString str_Blood = QString("%1").arg(Blood);
        painter->drawText(rect_Blood[i], Qt::AlignCenter, str_Blood);
    }

}
[解决办法]


#include "mywidget.h"
 
void MyWidget::paintEvent(QPaintEvent *event)
{
    //create a QPainter and pass a pointer to the device.
    //A paint device can be a QWidget, a QPixmap or a QImage
    QPainter painter(this);
 
    //a simple line
    painter.drawLine(1,1,100,100);
 
    //create a black pen that has solid line
    //and the width is 2.
    QPen myPen(Qt::black, 2, Qt::SolidLine);
    painter.setPen(myPen);
    painter.drawLine(100,100,100,1);
 
    //draw a point
    myPen.setColor(Qt::red);
    painter.drawPoint(110,110);
 
    //draw a polygon
    QPolygon polygon;
    polygon << QPoint(130, 140) << QPoint(180, 170)
             << QPoint(180, 140) << QPoint(220, 110)
             << QPoint(140, 100);
     painter.drawPolygon(polygon);
 
     //draw an ellipse
     //The setRenderHint() call enables antialiasing, telling QPainter to use different
     //color intensities on the edges to reduce the visual distortion that normally
     //occurs when the edges of a shape are converted into pixels
     painter.setRenderHint(QPainter::Antialiasing, true);
     painter.setPen(QPen(Qt::black, 3, Qt::DashDotLine, Qt::RoundCap));
     painter.setBrush(QBrush(Qt::green, Qt::SolidPattern));
     painter.drawEllipse(200, 80, 400, 240);
 
}

热点排行