精华内容
下载资源
问答
  • QT-QWT控件 QWT控件 qwt-6.0.0 曲线控件
  • Qt Creator不显示Qwt控件

    2020-05-27 10:50:20
    Qwt插件不在Qt Creator显示因为下载的...Qt Designer,Qt Designer会显示出来Qwt控件。 如果还未显示则参考我的另一篇博文解决该问题: https://blog.csdn.net/qq_40902709/article/details/105782919 在Qt Designer显

    Qwt插件不在Qt Creator显示因为下载的Qwt使用底层编译器和Qt Creator底层编译器不兼容导致的,需要下载Qt Creator版本对应的Qwt版本才能在Qwt页面进行显示。

    如果未显示则在ui文件上右键->用…打开->Qt Designer,Qt Designer会显示出来Qwt控件。

    如果还未显示则参考我的另一篇博文解决该问题:

    https://blog.csdn.net/qq_40902709/article/details/105782919
    

    在Qt Designer显示出Qwt插件后返回Qt Creator后依旧没有显示Qwt控件。此时Filter栏Qwt插件显示如下状态:
    在这里插入图片描述
    此时我们在.pro文件中添加

    INCLUDEPATH +=C:\qt\5.13.2\msvc2017_64\include\qwt-6.1.4
    LIBS+= -lqwtd

    到这一步程序可以编译通过,运行界面会显示qwt图表

    在.cpp文件中添加:此处调用qwt相关代码需要手动添加对应.h文件
    例如

    #include <qwt_series_data.h>
    #include <qwt_plot_curve.h>
    

    设置qwtPlot1图表标题为test:

    ui->qwtPlot1->setTitle(QObject::trUtf8("test"));
    

    到这一步可以实现对qwt图表相关设置进行更改(此处Qt Creator不显示图表,但是运行程序可以显示图表修改结果),需要注意的是,如果修改过程中使用到Qwt功能文件需要自己导入头文件。

    此处是Qwt用户指南,缺少什么模块找不到使用Ctrl+F查询模块名称增加查看该模块需要导入的头文件,将头文件添加到.cpp文件中即可。

    https://qwt.sourceforge.io/class_qwt_plot_curve.html
    

    此时编译运行结果:
    在这里插入图片描述

    但是QtCreator页面还是无法显示qwt图表在这里插入图片描述

    展开全文
  • 1、qwt控件设置罗盘背景 2、qwt去除控件边框 3、保证qwt画轨迹不影响罗盘 思路: 1、qwt添加画布,在画布上重定义绘图事件(使用事件监视器)。 思路结果失败!!! 2、qwt添加画布,在画布上设置背景图片。 ...

    说明:近期做项目遇到一个UI设计问题,就是背景显示,借此机会记录一下

    需求:

    1、qwt控件设置罗盘背景

    2、qwt去除控件边框

    3、保证qwt画轨迹不影响罗盘

    思路:

    1、qwt添加画布,在画布上重定义绘图事件(使用事件监视器)。 思路结果失败!!!

    2、qwt添加画布,在画布上设置背景图片。          思路结果失败!!!

    3、直接设置qwt背景,取消画布(画布会覆盖qwt背景)。    思路结果成功!!!

    尝试1(思路1):在画布上重定义绘图事件

    (1)事件处理器

    //---------绘制导航罗盘---------//
        bool eventFilter(QObject *watched,QEvent *e);//绘图
    bool Display_Navigator::eventFilter(QObject *watched, QEvent *e)
    {
        if (watched == ui->qwtPlot->canvas() )
            {
                if (e->type() == QEvent::Paint)//QEvent::Paint)
                {
                    paintOnWidget(ui->qwtPlot->canvas() );
                    qDebug()<<"eventFilter paint!";
                    return true;
                }
        }
        return QWidget::eventFilter(watched,e);     //将事件传递给父类
    }

    (2)画图重绘

    void Display_Navigator::paintOnWidget(QWidget *w)
    /*
     * 虚函数:指你希望重载的成员函数
     *(1)repaint()函数或者update()函数被调用;
    
     *(2)被隐藏的部件现在被重新显示;
    */
    {
        QPainter painter(this);
           QFont font;
           font.setPointSize(7);//字体大小设置为10
           setFont(font);
           /*开启反走样*/
           painter.setRenderHint(QPainter::Antialiasing,true);
           painter.setPen(Qt::white);
           painter.drawEllipse(QPointF(518,314),255,255);//画圆
           //画刻度
          QPen &pen = const_cast<QPen&>(painter.pen());
          pen.setStyle(Qt::SolidLine);
    
          for(int i = 0 ;i <= 360;i+= 5)
          {
          if((i%5==0)&&(i%90!=0))
            {
              QPointF ptStart =  trans(i);
              QPointF ptEnd =  trans(i,10);
              QPen  pen;
              pen.setColor(QColor(255,255,0));
              painter.setPen(pen);
              //旋转指定的角度
              painter.rotate(i%5);
              painter.drawLine(ptStart, ptEnd);
             painter.save();
             painter.restore();
          }
          if((i%10==0)&&(i%90!=0))
              {
                QPointF ptStart =  trans(i);
                QPointF ptEnd =  trans(i,20);
                QPen  pen;
                pen.setColor(QColor(255,255,0));
                painter.setPen(pen);
                painter.rotate(i%10);
                painter.drawLine(ptStart, ptEnd);
               painter.save();
               painter.restore();
            }
            if(i%90==0)
              {
                QPointF ptStart =  trans(i);
                QPointF ptEnd =  trans(i,20);
                QPen  pen;
                pen.setColor(QColor(255,0,0));
                painter.setPen(pen);
                painter.rotate(i%10);
                painter.drawLine(ptStart, ptEnd);
               painter.save();
               painter.restore();
            }
          }
                  for(int i = 30 ;i <= 360;i+= 30)
           {
                QPen  pen;
                pen.setColor(QColor(255,255,255));
                painter.setPen(pen);
               QPointF pt1= trans2(i);
               painter.drawLine(QPointF(518,314), pt1);
               QPointF pt =trans(i);
               painter.save();
               //偏移坐标原点到需要绘制刻度的位置
               painter.translate(pt);
               //旋转指定的角度
               painter.rotate(i);
               // 画刻度
               painter.drawText(-30,-32,55,20,Qt::AlignCenter,QString::number(i));
               painter.restore();
    
               if(i == 90)
               {
                   QPen  pen;
                   pen.setColor(QColor(255,255,255));
                   painter.setPen(pen);
                   QPointF pt1= trans2(i);
                   painter.drawLine(QPointF(518,314), pt1);
                   QPointF pt =trans(i);
                   painter.save();
                   //偏移坐标原点到需要绘制刻度的位置
                   painter.translate(pt);
                   //旋转指定的角度
                   painter.rotate(i);
                   pen.setColor(QColor(0,255,0));
                   painter.setPen(pen);
                   QFont  font;
                   font.setPointSize(14);
                   painter.setFont(font);
                   painter.drawText(-20,-5,60,30,Qt::AlignCenter, QString::fromUtf8( "E" ));
                   painter.restore();
               }
               if(i == 180)
               {
                   QPen  pen;
                   pen.setColor(QColor(255,255,255));
                   painter.setPen(pen);
                   QPointF pt1= trans2(i);
                   painter.drawLine(QPointF(518,314), pt1);
                   QPointF pt =trans(i);
                   painter.save();
                   //偏移坐标原点到需要绘制刻度的位置
                   painter.translate(pt);
                   //旋转指定的角度
                   painter.rotate(i);
                   pen.setColor(QColor(0,255,0));
                   painter.setPen(pen);
                   QFont  font;
                   font.setPointSize(14);
                   painter.setFont(font);
                   painter.drawText(-20,-5,60,30,Qt::AlignCenter, QString::fromLatin1( "S" ));
                   painter.restore();
               }
               if(i == 270)
               {
                   QPen  pen;
                   pen.setColor(QColor(255,255,255));
                   painter.setPen(pen);
                   QPointF pt1= trans2(i);
                   painter.drawLine(QPointF(518,314), pt1);
                   QPointF pt =trans(i);
                   painter.save();
                   //偏移坐标原点到需要绘制刻度的位置
                   painter.translate(pt);
                   //旋转指定的角度
                   painter.rotate(i);
                   pen.setColor(QColor(0,255,0));
                   painter.setPen(pen);
                   QFont  font;
                   font.setPointSize(14);
                   painter.setFont(font);
                   painter.drawText(-20,-5,60,30,Qt::AlignCenter, QString::fromLatin1( "W" ));
                   painter.restore();
               }
               if(i == 360)
              {
                   QPen  pen;
                   pen.setColor(QColor(255,255,255));
                   painter.setPen(pen);
                   QPointF pt1= trans2(i);
                   painter.drawLine(QPointF(518,314), pt1);
                   QPointF pt =trans(i);
                   //设置当前字体
                   painter.save();
                   //偏移坐标原点到需要绘制刻度的位置
                   painter.translate(pt);
                   //旋转指定的角度
                   painter.rotate(i);
                   pen.setColor(QColor(0,255,0));
                   painter.setPen(pen);
                   QFont  font;
                   font.setPointSize(14);
                   painter.setFont(font);
                   painter.drawText(-20,-5,60,30,Qt::AlignCenter, QString::fromLatin1( "N"));
                   painter.restore();
              }
          }
    }

    (3)获取角度对应的圆弧点

    #define DegreeToArc(x) x*M_PI/180.0 /* 角度转弧度 */

    QPointF Display_Navigator::trans(int angle) { QPointF ptResult(QPointF(518,314) ); //[角度转弧度] float rad = DegreeToArc(static_cast<float>(angle)); ptResult.setX(518 + (255) * qSin(static_cast<qreal>(rad))); ptResult.setY(314 - (255) * qCos(static_cast<qreal>(rad))); return ptResult; } QPointF Display_Navigator::trans(int angle,float len) { QPointF ptResult(QPointF(518,314) ); //[角度转弧度] float rad = DegreeToArc(static_cast<float>(angle)); ptResult.setX(518 + (255+len) * qSin(static_cast<qreal>(rad))); ptResult.setY(314 - (255+len) * qCos(static_cast<qreal>(rad))); return ptResult; } QPointF Display_Navigator::trans2(int angle) { QPointF ptResult(QPointF(518,314)); //[角度转弧度] float rad = DegreeToArc(static_cast<float>(angle)); ptResult.setX(518 +(255-30 )* qSin(static_cast<qreal>(rad))); ptResult.setY(314 -(255-30) * qCos(static_cast<qreal>(rad))); return ptResult; }

    (3)安装事件

        //----------绘图事件管理器----------//
        ui->qwtPlot->canvas()->installEventFilter(this);

    (4)效果:

    ①没加绘图事件

     

     

     ②添加绘图事件

     

     

     分析:可以在画布上添加绘图触发事件,但是会覆盖曲线,覆盖珊格线,不会显示曲线。在画布上设置背景失败!!!

    尝试2(思路3):设置qwt背景

    ①获取控件qwt实际大小

    void Display_Navigator::getQwtplotSize()
    {
        qwtplotSize = ui->qwtPlot->size();
    }//只能在控件显示(show() )之后,获取实际的大小,不能在初始化就获取大小

    ②为qwt添加背景图片

    //添加背景
    QPixmap pixmap = QPixmap(":/image/Image/compass.png").scaled(qwtplotSize);//.scaled(ui->qwtPlot_2->size());
    QPalette palette(ui->qwtPlot->palette());
    palette.setBrush(QPalette::Background, QBrush(pixmap));
    qDebug()<<"qwtplot.size="<<ui->qwtPlot->size();
    ui->qwtPlot->setPalette(palette);
    ui->qwtPlot->setAutoFillBackground(true);//设置窗体自动填充背景

    效果图:

     

     

     导航图会有边框。

    ③去除qwt绘图控件的边框

    ui->qwtPlot_2->setStyleSheet(QString::fromUtf8("border:none;"));//设置边框无

    设置这句话必须设置窗体自动填充背景,不然背景图片加载不上。

    最后成型效果图:

     

     

     

     

     

     

     

     

    ---恢复内容结束---

    转载于:https://www.cnblogs.com/shuoguoleilei/p/11458743.html

    展开全文
  • 关于Qt安装qwt后打开ui无法显示qwt控件问题做下笔记 (1)需要将xxx.ui 文件右键已designer 方式打开 (2)如果打不开designer 则在5.7\msvc2015\bin 目录下Qt5WebEngineWidgetsd.dll 和Qt5WebEngineWidgetsd.dll ...

    关于Qt安装qwt后打开ui无法显示qwt控件问题做下笔记

    (1)需要将xxx.ui 文件右键已designer 方式打开
    (2)如果打不开designer 则在5.7\msvc2015\bin 目录下Qt5WebEngineWidgetsd.dll 和Qt5WebEngineWidgetsd.dll
    添加后缀 改成Qt5WebEngineWidgetsd.dll.bak和Qt5WebEngineWidgetsd.dll .bak 重新(1)步骤即可

    展开全文
  • 交叉编译qwt控件并在Mini2440开发板上运行(Ubuntu12.04 + QtE4.6.3 + qwt6.1.2)

    Windows下编译运行qwt的方法请参阅博主的另一篇文章:
    Qt第三方图形控件qwt的编译安装与使用的简单方法(Win7+Qt4.8.6+MinGW4.8.2)

    Linux下编译运行qwt的方法请参阅博主的前一篇文章:
    Linux下编译并使用Qt第三方图形控件qwt(Ubuntu12.04 + Qt4.8.1 + qwt6.1.2)

    编译环境

    主机系统: VMWare + Ubuntu 12.04 (32位)
    交叉编译器版本: arm-linux-gcc-4.4.3-EABI
    Qt版本: QtE-4.6.3 + Qt Creator-2.5.0
    qwt版本: qwt-6.1.2

    安装步骤

    1. 下载qwt源文件并解压至任意目录
      地址:http://sourceforge.net/projects/qwt/files/qwt/6.1.2/

    2. 配置qwt的安装信息

      • 修改qwt的安装路径。 qwt默认安装在/usr/local/qwt-6.1.2目录下,博主在上一篇文章中已经将一个qwt6.1.2的主机版本安装在默认目录中,因此交叉编译版本需要修改为其他路径。
      • 精简安装内容。 将交叉编译版本不需要的和Mini2440的QtE-4.6.3不支持的模块删去。

      具体步骤,打开刚解压缩的qwt-6.1.2源文件目录中的qwtconfig.pri文件:

      • 将第22行的路径修改为QWT_INSTALL_PREFIX = /usr/local/qwt-$$QWT_VERSION-Mini2440,交叉编译版本的qwt将会被安装在/usr/local/qwt-6.1.2-Mini2440目录下
      • 将102行的#QWT_CONFIG += QwtOpenGL注释掉,删除OpenGL支持,这是因为Mini2440官方给出的编译QtE-4.6.3的配置文件中未开启OpenGL,否则编译会出现错误: qwt_plot_glcanvas.h:15:17: fatal error: qgl.h: No such file or directorycompiling qwt_abstract_slider.cpp
      • 将121行的#QWT_CONFIG += QwtDesigner注释掉,不编译Designer插件,这是因为Designer插件只能在主机上使用,否则会出现编译错误:qwt_designer_plugin.h:23: Error: Undefined interface
      • 如果想在开发板上测试qwt源文件中提供的example,则将144行的QWT_CONFIG +=QwtExamples注释取消掉即可,这样在稍后make过程中会在example目录下自动生成名为bin的可在mini2440开发板上执行的文件目录
    3. 交叉编译、安装qwt

    cd qwt-6.1.2
    qmake-arm qwt.pro
    make 
    make install

    等待片刻即可。

    注:
    qmake-arm就是QtE4.6.3的qmake程序,由于博主的Ubuntu下还有桌面版本的Qt4.8.1,两个版本的Qt库都加入了系统的PATH环境变量中,因此为了避免冲突,遂将4.8.1版本的qmake重命名为qmake-qt4,将4.6.3版本的qmake重命名为qmake-arm

    安装完成后,打开/usr/local路径,可以发现已经自动生成了一个qwt-6.1.2-Mini2440目录,刚才安装的所有文件都在这里。

    交叉编译包含qwt控件的Qt工程

    在Qt Creator中新建一个包含.ui文件的工程(Qt库选择Embedded版本的QtE-4.6.3),打开pro工程文件,在文件尾部加入如下一段:

    #qwt setting
    
    QWT_ROOT = /usr/local/qwt-6.1.2-Mini2440    #qwt控件安装位置,注意与qwtconfig.pri配置文件配合修改
    
    include ( $${QWT_ROOT}/features/qwt.prf )
    
    #end qwt setting
    

    然后进入设计器界面,随便拖放一个qwt控件到对话框中,点击build进行编译即可。

    在Mini2440开发板上运行包含qwt控件的Qt程序

    将qwt库文件复制到开发板中

    直接将刚才安装的/usr/local/qwt-6.1.2-Mini2440/lib文件夹中的libqwt.so.6.1.2文件拷贝到mini2440开发板中的/usr/local/lib目录下,然后从开发板终端进入目录/usr/local/lib,为qwt库建立3个软连接:

    cd /usr/local/lib
    ln -s libqwt.so.6.1.2 libqwt.so.6.1
    ln -s libqwt.so.6.1.2 libqwt.so.6
    ln -s libqwt.so.6.1.2 libqwt.so

    配置Qt程序的运行环境并运行程序

    Mini2440开发板中已经具备了Qt程序运行的条件,但是关于Qt程序运行的环境变量却并没有配置在系统中。这里,我们仿照友善之臂qt4脚本的做法(在开发板中直接vi /bin/qt4即可看到),建立一个名为qtenv的脚本文件,其内容如下:

    #!/bin/sh
    
    export TSLIB_TSDEVICE=/dev/input/event0 
    export TSLIB_CONFFILE=/usr/local/etc/ts.conf
    export TSLIB_PLUGINDIR=/usr/local/lib/ts
    export TSLIB_CALIBFILE=/etc/pointercal
    export LD_LIBRARY_PATH=/usr/local/lib
    export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin
    
    export QWS_DISPLAY=:1
    
    TS_INFO_FILE=/sys/devices/virtual/input/input0/uevent
    if [ -e $TS_INFO_FILE -a "/bin/grep -q TouchScreen < $TS_INFO_FILE" ]; then
        export QWS_MOUSE_PROTO="Tslib:/dev/input/event0 MouseMan:/dev/input/mice"
        if [ ! -s /etc/pointercal ] ; then
            rm /etc/pointercal
            /usr/local/bin/ts_calibrate
        fi
    else
        export QWS_MOUSE_PROTO="MouseMan:/dev/input/mice"
    fi
    unset TS_INFO_FILE
    
    export QWS_KEYBOARD=TTY:/dev/tty1
    
    export HOME=/root
    
    cd /home/plg
    ./$1 -qws
    hotplug

    将刚建立的qtenv脚本文件和Qt应用程序qwt_test文件拷贝到/home/plg目录下,然后执行:

    cd /home/plg
    ./qtenv qwt_test &

    即可成功在后台运行包含qwt控件的Qt程序。

    参考资料:
    Qwt移植
    移植qwt库到arm开发板!!!
    Ubuntu12.04交叉编译mini2440提供的QtE4.6.3并测试sqlite3数据库
    Linux软连接和硬链接

    展开全文
  • qwt控件问题

    2015-12-18 21:33:33
    [img=... 为何我拖一个qwt控件,然后编译就会出现程序异常结束啊? 感觉在.pro里面配置没错啊。自己新建一个小demo就没问题,但是放在这个工程里面就出错。求解!
  • Qt4.8.1 之加载QWT控件

    2016-11-11 11:24:07
    1、下载和编译qwt http://blog.csdn.net/lihui126/article/details/45643237 2、win7下环境的配置 ... 可以不用qt designer来加载qwt里面的控件 3、demo: .pro文件: QT += core gui
  • Qt creator 使用 qwt 控件

    2016-07-15 13:02:17
    Lets start: 1. Download and install QT 5.0.1 (MinGw) to: "C:\Qt\Qt5.0.1" ...2. Download and extract Qwt 6.1 RC3 to: "C:\qwt-6.1-rc3" 3. Add "C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin" to your systems path va
  • 一、首先下载 qwt 软件包,我用的是 qwt-6.1.3 下载地址:https://download.csdn.net/download/hsl416604093/10818165 qwt 官方主页:http://qwt.sourceforge.net/ 二、解压 # tar -jxvf qwt-6.1.3.tar.bz2 ...
  • Win10 step1:准备qwt源码 下载地址http://sourceforge.net/projects/qwt/files/qwt/
  • qwt绘图控件

    2015-09-25 21:14:32
    win7 32和64位qwt,有头文件。直接可以使用
  • Qt 加载qwt开源控件

    2020-08-28 12:08:19
    1. 下载qwt,解压,编译生成D:\QT5.9.1\build-qwt-Desktop_Qt_5_9_1_MinGW_32bit-Debug文件夹。 2. 将build-qwt-Desktop_Qt_5_9_1_MinGW_32bit-Debug\lib目录下的*.dll复制到D:\QT5.9.1\5.9.1\mingw53_32\bin目录下...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 211
精华内容 84
关键字:

qwt控件