qt画图程序总结

这篇博客总结了使用Qt进行画图程序开发的关键技术,包括通过界面文件创建控件,线程的使用,重载QPaintEvent进行画图,设置颜色,QLCDNumber的数字显示和文件操作等。通过实例展示了如何实现画图、界面交互和文件读写功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值