精华内容
下载资源
问答
  • VS自带调试功能是因为vs以库的形式集成了调试器,没有exe qt creator依赖cdb.exe来进行调试,所以需要额外安装windows SDK 但window SDK安装东西太多,可以单独选择dbg_amd64.msi安装...

    VS自带调试功能是因为vs以库的形式集成了调试器,没有exe

    qt creator依赖cdb.exe来进行调试,所以需要额外安装windows SDK

    但window SDK安装东西太多,可以单独选择dbg_amd64.msi安装

    展开全文
  • 我在C盘默认安装了一个QT create【5.6.2】,然后新建一个【Qt Widgets Application】文件项目,什么代码都没写没做,再然后直接调试编译,编译输出如下: ![图片说明]...
  • 调试器先点"添加Qt 源码...",选择C:\Qt\4.8.6\src然后修改第一行的设置设置如下(请仔细看清楚了)上面是:C:/iwmake/build_mingw_opensource下面是(这个路径包括src):C:\Qt\4.8.6\ 然后就可以调试QT源码啦!效果...

    安装环境请参考:https://netpt.net/forum.php?mod=viewthread&tid=36
    直接上方法了:
    菜单: 工具->选项->调试器
    先点"添加Qt 源码...",选择C:\Qt\4.8.6\src
    然后修改第一行的设置
    设置如下(请仔细看清楚了)
    上面是:C:/iwmake/build_mingw_opensource
    下面是(这个路径不包括src):C:\Qt\4.8.6\

    然后就可以调试QT源码啦!效果如下:

     

    如果你一定要问为什么,参考:https://netpt.net/forum.php?mod=viewthread&tid=52
     

     

     

    展开全文
  • 源代码是: ``` // 头文件中声名类 class MemoryManager: public QWidget ... MemoryManager(QWidget *parent = nullptr);...//这里打断点,调试后出现题目中所说的问题。...而且也调用到了,为什么还会出这种问题?
  • 在windows和linux下用Qt调试串口,...十一假期在linux下试验,发送没问题,但是QextSerialPort在linux下只提供了查询方式,知道为什么。所以我定义了一个定时器,定时查询串口数据刷新接收显示。但出现了新问题,软

    在windows和linux下用Qt调试串口,软件反应慢

    2012-10-11 14:20
    在在windows下用Qt玩串口有些日子了,查询和事件驱动方式都试过了,全部OK。
    十一假期在linux下试验,发送没问题,但是QextSerialPort在linux下只提供了查询方式,不知道为什么。所以我定义了一个定时器,定时查询串口数据刷新接收显示。但出现了新问题,软件自此运行很慢,按钮半天才响应。
    软件为什么反应慢了,试验,去掉接收部分,好了。加上,软件还是反应慢,更改定时器时间,无作用,一直持续到今天,终于发现改了port->setTimeout(500);把500改为10,好了。原来如此。
    希望后来者,不要在遇到此问题,以此做个记录。
    展开全文
  • QT开发之旅三串口设备调试工具

    千次阅读 2013-12-20 13:48:54
    这里首先说明一下,这个为什么叫串口设备调试工具而不是串口调试工具,是因为这个工具比网络上的串口调试工具多出了一些真实需要的用来调试设备的功能,首先一点就是大部分的串口调试工具收到数据都是立即返回,这样...

    这里首先说明一下,这个为什么叫串口设备调试工具而不是串口调试工具,是因为这个工具比网络上的串口调试工具多出了一些真实需要的用来调试设备的功能,首先一点就是大部分的串口调试工具收到数据都是立即返回,这样的数据都是连着的,头一条数据和后一条数据头尾相连,对于调试着来说要看数据非常麻烦,而且在不断有数据过来时,要停下来看数据除非关闭串口,而不能在打开串口的时候看数据,因为不断有数据过来冲掉前面的数据显示,甚至有些还不能最大化等等情况,这个工具是根据将近四年的与硬件通信这块开发工具的切身实际需求量身定做的,还能模拟设备立即回复数据。之前很多QT开发的版本源码分成两套,一套在windows下编译,一套在linux下编译,甚至麻烦,虽然QT5.1之后的版本自带了串口通信类,本人测试过,貌似还有小问题,在快速收发数据时容易卡住,这次带来的源码不用做任何改动即可在多个平台编译。

    项目名称:串口设备调试工具

    开发环境:WIN7+QT4.7+QT CREATOR2.8+MINGW

    已编译通过测试平台:XP、Win7、ubuntu、tiny210

    技术实现:通过第三方串口通信类,解析协议并作出处理

    基本功能:

    1:支持16进制数据发送与接收。

    2:支持windows下COM9以上的串口通信。

    3:自动加载对应操作系统串口号。

    4:实时显示收发数据字节大小以及串口状态。

    高级功能:

    1:可自由管理需要发送的数据,每次只要从下拉框中选择数据即可,无需重新输入数据。

    2:可模拟设备回复数据,需要在主界面开启模拟设备回复数据。当接收到设置好的指令时,立即回复设置的回复指令。例如指定收到0x16 0x00 0xFF 0x01需要回复0x16 0x00 0xFE 0x01,则只需要在SendData.txt中添加一条数据16 00 FF 01:16 00 FE 01即可。

    3:可定时发送数据和保存数据到文本文件:,默认间隔5秒钟,可更改间隔时间。

    4:在不断接收到大量数据时,可以暂停显示数据来查看具体数据,后台依然接收数据但不处理,无需关闭串口来查看已接收到的数据。

    5:每次收到的数据都是完整的一条数据,而不是脱节的,做了延时处理。

    6:一套源码随处编译,无需更改串口通信类,已在XP/WIN7/UBUNTU/ARMLINUX系统下成功编译并运行。

    如果有更好的建议或者意见,请Q我(517216493),谢谢!

    运行截图:

     

    粗略步骤:

    第一步:布局好界面,控件命名好,建议用pascal命名法。

    第二步:准备unix和windows串口通信第三方类qextserialport.h、qextserialport.cpp、qextserialport_global.h、qextserialport_p.h、qextserialport_unix.cpp、qextserialport_win.cpp。

    导入到工程,在pro文件中这样写:

    QT       += core gui

     

    TARGET = mySerialPortTools

    TEMPLATE = app

     

     

    SOURCES += main.cpp\

            qextserialport.cpp\

            frmmain.cpp

     

    HEADERS += frmmain.h \

            qextserialport_global.h \

            qextserialport.h \

            myhelper.h

     

    win32 { SOURCES += qextserialport_win.cpp }

    unix { SOURCES += qextserialport_unix.cpp }

     

    FORMS += frmmain.ui

     

    RESOURCES += \

        main.qrc

     

    MOC_DIR=temp/moc

    RCC_DIR=temp/rcc

    UI_DIR=temp/ui

    OBJECTS_DIR=temp/obj

    DESTDIR=bin

     

    win32:RC_FILE=main.rc

     

    CONFIG += warn_off      #关闭警告

     

    这样的话在不同平台下会自动加载对应平台的cpp实现文件来编译。

    第三步:初始化主界面,自动加载对应串口号波特率等信息。

    void frmMain::InitForm()
    {    
        ReceiveCount=0;
        SendCount=0;
        IsShow=true;
        IsAutoClear=false;
        IsHexSend=true;
        IsHexReceive=true;
        IsDebug=false;
    
        QStringList comList;//串口号
        QStringList baudList;//波特率
        QStringList parityList;//校验位
        QStringList dataBitsList;//数据位
        QStringList stopBitsList;//停止位
    
    #ifdef Q_OS_WIN//如果是windows系统
        comList<<"COM1"<<"COM2"<<"COM3"<<"COM4"<<"COM5"<<"COM6"
              <<"COM7"<<"COM8"<<"COM9"<<"COM10"<<"COM11"<<"COM12"
             <<"COM13"<<"COM14"<<"COM15";
    #else//如果是unix或者其他系统
        comList<<"ttyUSB0"<<"ttyUSB1"<<"ttyUSB2"<<"ttyUSB3"<<"ttyUSB4"<<"ttyUSB5"
              <<"ttyS0"<<"ttyS1"<<"ttyS2"<<"ttyS3"<<"ttyS4"<<"ttyS5"<<"ttyS6"
             <<"ttyS7"<<"ttyS8"<<"ttyS9";
    #endif
    
        ui->cboxPortName->addItems(comList);
        ui->cboxPortName->setCurrentIndex(0);
    
        baudList<<"50"<<"75"<<"100"<<"134"<<"150"<<"200"<<"300"
               <<"600"<<"1200"<<"1800"<<"2400"<<"4800"<<"9600"
              <<"14400"<<"19200"<<"38400"<<"56000"<<"57600"
             <<"76800"<<"115200"<<"128000"<<"256000";
    
        ui->cboxBaudRate->addItems(baudList);
        ui->cboxBaudRate->setCurrentIndex(12);
    
        parityList<<"无"<<"奇"<<"偶";
    
    #ifdef Q_OS_WIN//如果是windows系统
        parityList<<"标志";
    #endif
    
        parityList<<"空格";
    
        ui->cboxParity->addItems(parityList);
        ui->cboxParity->setCurrentIndex(0);
    
        dataBitsList<<"5"<<"6"<<"7"<<"8";
        ui->cboxDataBit->addItems(dataBitsList);
        ui->cboxDataBit->setCurrentIndex(3);
    
        stopBitsList<<"1";
    
    #ifdef Q_OS_WIN//如果是windows系统
        stopBitsList<<"1.5";
    #endif
    
        stopBitsList<<"2";
    
        ui->cboxStopBit->addItems(stopBitsList);
        ui->cboxStopBit->setCurrentIndex(0);
    
        //读取数据(采用定时器读取数据,不采用事件,方便移植到linux)
        myReadTimer=new QTimer(this);
        myReadTimer->setInterval(300);
        connect(myReadTimer,SIGNAL(timeout()),this,SLOT(ReadMyCom()));
    
        //发送数据
        mySendTimer=new QTimer(this);
        mySendTimer->setInterval(5000);
        connect(mySendTimer,SIGNAL(timeout()),this,SLOT(WriteMyCom()));
    
        //保存数据
        mySaveTimer=new QTimer(this);
        mySaveTimer->setInterval(5000);
        connect(mySaveTimer,SIGNAL(timeout()),this,SLOT(SaveMyCom()));
    
        //显示日期时间
        myTimer=new QTimer(this);
        myTimer->start(1000);
        connect(myTimer,SIGNAL(timeout()),this,SLOT(SetTime()));
    
        QDate dateNow=QDate::currentDate();
        ui->labDate->setText(QString("日期:%1").arg(dateNow.toString("yyyy年MM月dd日 dddd")));
    
        for (int i=1;i<=60;i++)
        {
            ui->cboxSend->addItem(QString::number(i)+"秒");
            ui->cboxSave->addItem(QString::number(i)+"秒");
        }
    
        ui->cboxSave->setCurrentIndex(4);
        ui->cboxSend->setCurrentIndex(4);
    
        ui->cboxSend->setEnabled(false);
        ui->cboxSave->setEnabled(false);
    
        this->ChangeEnable(false);
        this->ReadConfigData();//读取发送数据加载到下拉框
        this->ReadSendData();//读取数据转发文件
    
        ui->txtSend->installEventFilter(this);//安装监听器监听发送数据框回车响应
    }

    第四步:采用定时器读取串口数据,其实也可以采用事件机制,在几大平台也测试通过事件来收数据也可以,但是在windows下在快速收发大量数据时候居然会卡住,同样的代码在linux表现很好,不明原因,后面采用定时器读取机制,问题就没有了。

    void frmMain::ReadMyCom()
    {
        //这个判断尤为重要,否则的话直接延时再接收数据,空闲时和会出现高内存占用
        if (myCom->bytesAvailable()<=0){return;}
    
        myHelper::Sleep(100);//延时100毫秒保证接收到的是一条完整的数据,而不是脱节的
        QByteArray buffer=myCom->readAll();
    
        if (IsShow)
        {
            if (IsHexReceive)
            {
                QString tempDataHex=myHelper::ByteArrayToHexStr(buffer);
                ui->txtDataHex->append(QString("接收:%1 时间:%2")
                                       .arg(tempDataHex)
                                       .arg(QTime::currentTime().toString("HH:mm:ss")));
    
                if (IsDebug)//2013-8-6增加接收数据后转发数据,模拟设备
                {
                    foreach(QString tempData,SendDataList)
                    {
                        QStringList temp=tempData.split(';');
                        if (tempDataHex==temp[0])
                        {
                            //这里没有跳出循环,有可能一条数据会对应多条数据需要转发
                            myCom->write(myHelper::HexStrToByteArray(temp[1]));
                        }
                    }
                }
            }
            else
            {
                QString tempDataNormal=QString(buffer);
                ui->txtDataHex->append(QString("接收:%1 时间:%2")
                                       .arg(tempDataNormal)
                                       .arg(QTime::currentTime().toString("HH:mm:ss")));
    
                if (IsDebug)//2013-8-6增加接收数据后转发数据,模拟设备
                {
                    foreach(QString tempData,SendDataList)
                    {
                        QStringList temp=tempData.split(';');
                        if (tempDataNormal==temp[0])
                        {
                            //这里没有跳出循环,有可能一条数据会对应多条数据需要转发
                            myCom->write(temp[1].toAscii());
                        }
                    }
                }
            }
    
            ReceiveCount=ReceiveCount+buffer.size();
            ui->labReceive->setText(QString("接收:%1 字节").arg(ReceiveCount));
        }
    }
    void frmMain::WriteMyCom()
    {
        QString str=ui->txtSend->currentText();
        if (str==""){ui->txtSend->setFocus();return;}//发送数据为空
        if (!myCom->isOpen()) { return; }//串口没有打开
    
        QByteArray outData=str.toAscii();
        int size=outData.size();
    
        if (IsHexSend)//转化为16进制发送
        {
            outData=myHelper::HexStrToByteArray(str);
            size=outData.size();
            myCom->write(outData);
        }
        else
        {
            size=outData.size();
            myCom->write(outData);
        }
    
        ui->txtDataHex->append(QString("发送:%1 时间:%2")
                               .arg(str)
                               .arg(QTime::currentTime().toString("HH:mm:ss")));
    
        SendCount=SendCount+size;
        ui->labSend->setText(QString("发送:%1 字节").arg(SendCount));
    
        if (IsAutoClear)
        {
            ui->txtSend->setCurrentIndex(-1);
            ui->txtSend->setFocus();
        }
    }
    
    void frmMain::SaveMyCom()
    {
        QString tempData=ui->txtDataHex->toPlainText();
        if (tempData==""){return;}//如果没有内容则不保存
    
        QDateTime now=QDateTime::currentDateTime();
        QString name=now.toString("yyyyMMddHHmmss");
        QString fileName=name+".txt";
    
        QFile file(fileName);
        file.open(QFile::WriteOnly | QIODevice::Text);
        QTextStream out(&file);
        out<<tempData;
        file.close();
    }

    这里有个细节说下,就是在接收数据函数里面,增加了一个判断if (myCom->bytesAvailable()<=0){return;}如果不这样的话,每次定时读取都会延时,内存占用很高,当然,如果采用事件机制的话,这里不需要任何延时或者判断。

    可执行文件下载地址:http://download.csdn.net/detail/feiyangqingyun/6745003

    源码猛点这里:http://download.csdn.net/detail/feiyangqingyun/6745011

    展开全文
  • SelectionHandler* handler=... handler->onSelect(); handler的运行时类型是MarkerSelectionHandler,SelectionHandler的子类,onSelcet在父类中定义的是虚函数,在子类中继承了这个虚函数...为什么不能识别RTTI?
  • 我在qt里面使用了QAxWidget这个控件,ui中添加了以后,在窗口的构造函数里调用它 ...调试状态下,每次从开始页面里面进入新页面就会重复报这个错误,,这是为什么呢? 如有什么地方陈述清楚,请指正
  • 为什么80%的码农都做不了架构师?>>> ...
  • 一、前言这个为什么叫串口设备调试工具而不是串口调试工具,是因为这个工具比网络上的串口调试工具多出了一些真实需要的用来调试设备的功能,首先一点就是大部分的串口调试工具收到数据都是立即返回,这样的数据都是...
  •  我也知道为什么,就是想放这么一张图在这里。 [TOC] 项目介绍:  ✅ Qt 的 GUI 基础控件用法,网络;  ✅ DTK 重绘控件方式的框架解析;  ✅ QtCrator 使用和一些小技巧;  ✅ Qt 原理/运行机制理解  ...
  • 现象: 在调试数据库操作时发现还没commit数据已经插入表中,执行rollback也没有作用,明明已经调用了transaction(),这是为什么呢? 开始排查: 1.确定数据库驱动是否支持事务?使用QSqlDriver的hasFeature函数,...
  • 文章已更新,最新地址:https://www.fearlazy.com/index.php/post/145.html现象:在调试数据库操作时发现还没commit数据已经插入表中,执行rollback也没有作用,明明已经调用了transaction(),这是为什么呢?...
  • Hello,Qt5

    2016-03-21 19:03:04
    由于在windows7下知道为什么,程序的构建与调试十分慢,所以我转到ubuntu15.10下开发。不得说,如果不是开发.Net程序的话,linux系统是最好的开发系统。 但是在Ubuntu下我遇到了一个问题,官网下的QtCreater...
  • Qt的QLabel能显示多个空格的问题

    千次阅读 2017-04-14 21:23:14
    遇到一个问题,把字符串" !"显示在QLabel中的时候,他只能显示"!"。 因为涉及到通讯问题,所以还从通讯发送就开始...知道什么时候动了QLabel的这个选项的。反正改成Auto之后就解决了。网上搜了下区别,好像是因为
  • 调试数据库操作时发现还没commit数据已经插入表中,执行rollback也没有作用,明明已经调用了transaction(),这是为什么呢? 开始排查: 1.确定数据库驱动是否支持事务?使用QSqlDriver的hasFe...
  • 最近遇到一个非常非常奇怪的错误,我暂时将它定义为QT5.5的BUG,程序运行不调试,将导致在最后绘制图像的时候程序崩溃! 触发BUG的方法 当程序像这样的时候,无论是调试还是不调试,程序都运行得很完美。 当程序...
  • 写应用程序免不了需要使用日志来记录或者调试一些信息,Qt一个这么大的框架,当然免不了集成了...qCDebug(),qCWarning(),qCCritical()等,为什么呢?因为这系列接口提供了一个额外的参数来指明是哪个模块的日志。...
  • 在头文件,我们判断,如果定义了宏ANDROID,我们就安装一个消息过滤器,接管qt输出的消息,转发到Android的日志系统中,如果没定义宏ANDROID,就是一个空宏,什么干 在源文件里,我们安装自己的消息过滤器 在...
  • QT批拷贝文件

    千次阅读 2011-02-28 19:34:00
     今天把前段时间用到的批拷贝文件接口在QT中实现,其中也就是大量使用Window API,整个过程几乎存在什么问题。但还是有让人不解的地方:  1、但有一点浪费了我大量的时间,我开始一直是边调试边做。...
  • 我在使用qt4.8编写一个程序的时候发现了一个很奇怪的问题。当我的主界面处于show状态时, ...但是我知道为什么缩小到托盘会导致这样的后果,希望遇到这种情况的朋友能指导一下我怎么解决这个问题。
  • gdb调试c++的STL容器

    千次阅读 2015-06-25 16:28:47
     我一直都是在Linux下做开发的,但是...之前为什么没有深入使用GDB,QtCreator带来一定的便利是一方面,另一方面是觉得GDB遇到了vector, map, set, list就没办法看数据了。 今天我研究了一下,其实也是Easy的。
  • * 设置最大可见数目5,是不是合理? */ void Vsbak::init_comboBox() // 找压缩好的文件 Combobox 下拉菜单 { /* * 1. 用一个对象进入dir-dest目录下 * 2. 过滤掉包含后追的文件 * 3. 获取被过滤...
  • 所以最好写相对路径,但写了相对路径设置好后,我这边用的时候却打开是为什么呢?这时候选择项目 -》属性 。或者点击该项目右键选择属性设置 选择调试中的工作目录 原始的是projectDir 但可能这个相对路径是...
  • 为什么使用db能查询到数据但是就是无法对数据库进行任何的修改和插入,插入函数 int MySqldb::insertNewUser(int id, QString password, QString name) { int ret; QSqlQuery query; QString sql = QString(...
  • 本来想写一个子线程和主线程用信号槽实现的数据交互,刚开始是报错的,调试成功,第二天打开工程发现报错“类名”does not name a type,后来查到是因为头文件互相包含了,但是问题是为什么当时报错,后来再打开...
  • 模态是指当子窗口弹出时,焦点始终被强行集中于子窗口,只要子窗口退出,焦点就... 问题一:模态与非模态 以前一直没有弄明白为什么我的程序一启动便可以打印每一个界面的调试信息(我一直以为整个程序是单线程的)
  • 注:请选择小程序项目,非小游戏,例子中无 appid,所以无法在手机上运行,如果需要真机调试,请在打开例子时,填上自己的小程序 id 快速开始 mpvue 的使用方法请移步 mpvue 接入方案 taro 的使用方法请参考 Taro ...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

为什么qt调试不了