读书人

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

发布时间: 2014-01-19 01:28:51 作者: rapoo

给一些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);

}

读书人网 >C++

热点推荐