这是画图程序的部分,但不是说只是画图,而是我写画图程序时使用到的所有技术。
1.界面文件,qt里直接拖拉就可以了,只要在程序里访问你设置的名字就可以
访问和设置控件了。
2.线程
class Cliect : public QThread
{
Q_OBJECT
public:
Cliect();
~Cliect();
void run();
};
只要你继承自QThread,重载run,run里执行你想执行的任务就可以了,在你调用了它的start函数之后,
run()函数就开始执行了。
3.画图(画路径--QPaintEvent):首先重载paintEvent()
class EcgLabel : public QLabel
{
Q_OBJECT
public:
EcgLabel(QWidget *parent = 0);
~EcgLabel();
public:
void paintEvent(QPaintEvent *event);
};
画图部分:
void EcgLabel::paintEvent(QPaintEvent *event)
{
QPainterPath *EcgPath;
EcgPath = new QPainterPath;
EcgPath->moveTo(0,156);
EcgPath->lineTo(1, 285 - show_buf_ecg[j]);
QPainter painter(this);
QPen pen(QColor(85,255,0),1);
painter.setPen(pen);
painter.drawPath(*EcgPath);
delete EcgPath;
}
只要调用该类的update()函数,画图函数就可以执行了
4.设置颜色
ui->lable->setPalette(pe);lable是一个标签
//设置按钮背景图片
ui->pbutton_start->setStyleSheet("QPushButton{background-image: url(:/images/button.jpg);}"
"QPushButton{background-color: rgba(255, 255, 255, 0);}");
//设置面板颜色
QPalette palette1=this->palette();
palette1.setBrush(QPalette::Window,QBrush(QPixmap(":/images/blue.jpg")));
this->setPalette(palette1);
//告诉Qt 自动填充背景
this->setAutoFillBackground(true);
ui->frame_14->setVisible(true);
5.QLCDNumber
HrateLcdNumber = new QLCDNumber(ui->frame_17);
HrateLcdNumber->setObjectName(QString::fromUtf8("HrateLcdNumber"));
HrateLcdNumber->setGeometry(QRect(660, 45, 90, 31));
HrateLcdNumber->setNumDigits(3);
设置显示的数字:
HrateLcdNumber->display(p_hrate);
获取数值:
HrateLcdNumber->intValue()
6.文件操作
(1)读取文件
实例化一个文件
QFile file("./data.txt");
if(file.open(QFile::ReadWrite | QFile::Text))
{
QTextStream stream(&file);
QTextCodec *code=QTextCodec::codecForName("GB2312");
stream.setCodec(code);
//如果没有到文件尾
while(!stream.atEnd())
{
QString line = stream.readLine();
//用","分割line
QStringList elems = line.split(",");
if(!elems.at(0).compare(QString::number(pid,16)))
{
//第一个分割出来的字符写到标签里
ui->name_a_value->setText(elems.at(1));
file.close();
(2)写文件
QFile file("./data.txt");
if(file.open(QFile::ReadWrite | QFile::Text))
{
QTextStream stream(&file);
QString str;
QTextCodec *code=QTextCodec::codecForName("GB2312");
stream.setCodec(code);
while(!stream.atEnd())
{
QString line = stream.readLine();
QStringList elems = line.split(",");
if(!elems.at(0).compare(QString::number(pid,16)))
{
str.append(ui->num_a_value->text());
str.append(",");
str.append(QString::number(HrateLcdNumber->intValue(),10));
str.append(" ");
//文件指针现在的位置
qint64 an = stream.pos();
//文件定位
stream.seek(an-37);
//将数据写到文件里
stream<<str;
1.界面文件,qt里直接拖拉就可以了,只要在程序里访问你设置的名字就可以
访问和设置控件了。
2.线程
class Cliect : public QThread
{
Q_OBJECT
public:
Cliect();
~Cliect();
void run();
};
只要你继承自QThread,重载run,run里执行你想执行的任务就可以了,在你调用了它的start函数之后,
run()函数就开始执行了。
3.画图(画路径--QPaintEvent):首先重载paintEvent()
class EcgLabel : public QLabel
{
Q_OBJECT
public:
EcgLabel(QWidget *parent = 0);
~EcgLabel();
public:
void paintEvent(QPaintEvent *event);
};
画图部分:
void EcgLabel::paintEvent(QPaintEvent *event)
{
QPainterPath *EcgPath;
EcgPath = new QPainterPath;
EcgPath->moveTo(0,156);
EcgPath->lineTo(1, 285 - show_buf_ecg[j]);
QPainter painter(this);
QPen pen(QColor(85,255,0),1);
painter.setPen(pen);
painter.drawPath(*EcgPath);
delete EcgPath;
}
只要调用该类的update()函数,画图函数就可以执行了
4.设置颜色
ui->lable->setPalette(pe);lable是一个标签
//设置按钮背景图片
ui->pbutton_start->setStyleSheet("QPushButton{background-image: url(:/images/button.jpg);}"
"QPushButton{background-color: rgba(255, 255, 255, 0);}");
//设置面板颜色
QPalette palette1=this->palette();
palette1.setBrush(QPalette::Window,QBrush(QPixmap(":/images/blue.jpg")));
this->setPalette(palette1);
//告诉Qt 自动填充背景
this->setAutoFillBackground(true);
ui->frame_14->setVisible(true);
5.QLCDNumber
HrateLcdNumber = new QLCDNumber(ui->frame_17);
HrateLcdNumber->setObjectName(QString::fromUtf8("HrateLcdNumber"));
HrateLcdNumber->setGeometry(QRect(660, 45, 90, 31));
HrateLcdNumber->setNumDigits(3);
设置显示的数字:
HrateLcdNumber->display(p_hrate);
获取数值:
HrateLcdNumber->intValue()
6.文件操作
(1)读取文件
实例化一个文件
QFile file("./data.txt");
if(file.open(QFile::ReadWrite | QFile::Text))
{
QTextStream stream(&file);
QTextCodec *code=QTextCodec::codecForName("GB2312");
stream.setCodec(code);
//如果没有到文件尾
while(!stream.atEnd())
{
QString line = stream.readLine();
//用","分割line
QStringList elems = line.split(",");
if(!elems.at(0).compare(QString::number(pid,16)))
{
//第一个分割出来的字符写到标签里
ui->name_a_value->setText(elems.at(1));
file.close();
(2)写文件
QFile file("./data.txt");
if(file.open(QFile::ReadWrite | QFile::Text))
{
QTextStream stream(&file);
QString str;
QTextCodec *code=QTextCodec::codecForName("GB2312");
stream.setCodec(code);
while(!stream.atEnd())
{
QString line = stream.readLine();
QStringList elems = line.split(",");
if(!elems.at(0).compare(QString::number(pid,16)))
{
str.append(ui->num_a_value->text());
str.append(",");
str.append(QString::number(HrateLcdNumber->intValue(),10));
str.append(" ");
//文件指针现在的位置
qint64 an = stream.pos();
//文件定位
stream.seek(an-37);
//将数据写到文件里
stream<<str;