qt画图程序总结

这是画图程序的部分,但不是说只是画图,而是我写画图程序时使用到的所有技术。
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; 

你可能感兴趣的:(qt画图程序总结)