QT访问类成员变量出错,求解

编译能通过,运行时程序出错自动退出,用debug检查提示
“底层由于接受到操作系统的信号而停止
信号名称:SIGSEGV
信号意义:Segmentation fault”

断点在成员变量的访问上,整了一天,没弄明白,快崩溃了。
程序大概是这样:

 class CMeta : public QGraphicsPathItem
{
public:
    void test1();
private:
    QPointF mTest;
}
void CMeta::test1()
{
    QString str;
    str.sprintf("%f",mTest.x());
    QMessageBox::about(NULL, "About", str);
}

在程序中调用test1(),出错

 CMeta *mMeta = qgraphicsitem_cast<CMeta *>(startMetas.first());
    //QList<CHtPts*> *mHtPts = mMeta->GetHtPts();
    mMeta->test1();

1个回答

解决了,原因为派生的CMeta类,未返回自定义type号,导致CMeta指针不能被正确返回,所以内存出错

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Qt类中声明变量就出错

Qt中声明变量就出现未知的错误 下面是其中几种现象,都是建立在程序本来运行无误的基础上 1.有时在private中声明指针,程序编译通过,但不运行,无反应。换到private中声明 可能就能正确运行 2.有时public中声明常量或者编译通过,可以运行,但是运行过程中报错 问题出现很迷,我甚至开始怀疑我的Qt配置有问题。 叙述可能不太清晰,有没有遇到过或知道解法的大神不吝赐教,谢谢啦~~~

QT 中直接修改方式修改一个widget对象中定义的共有成员变量无法修改,求解答

本人是刚刚接触Qt不久的小菜鸡,弄了一个简单地操作数据库的程序,其中登录需要根据不同角色显示不同的窗口,并把登录账号作为参数传递到子窗口(因为后面我打算设计一个修改密码的功能),我的思路是:创建两个Qt设计师界面类的对象:Login和Customer,Login作登录窗口,其中定义客户窗口Customer c;而在Customer中我定义一个int型的公有成员变量ID,用来存储当前登录的用户ID(就是登录账号);登录窗口的登录按钮的槽函数会根据选择的角色以及输入的账号和密码是否正确来选择显示相应的操作界面(在这里我仅仅做了客户的),然后将成功登录时使用的ID,直接赋值给c.ID,然后关闭登录界面。 但是在我的试验中,我想把这个值显示在一个标签中,却在c窗口中显示是一个随机数,而我直接用c.ID=500,得到的结果依然是标签中显示的还是一个随机数,这也就意味着**我直接给公有成员变量赋值的语句根本没有起作用**,这是为什么,我又该怎么解决这个问题。我的数据库链接是成功的,而且登录功能已经能够实现。最关键的是**这个是可以通过编译,只是运行时无法达到功能** 以下是我的部分代码(主函数和连接数据库的文件我就不发了): ``` #ifndef LOGIN_H #define LOGIN_H #include <QWidget> #include <customer.h> namespace Ui { class Login; } class Login : public QWidget { Q_OBJECT public: explicit Login(QWidget *parent = 0); ~Login(); private slots: void on_pushButton_clicked(); private: Ui::Login *ui; Customer c; }; #endif // LOGIN_H #include "login.h" #include "ui_login.h" #include <QMessageBox> #include <QSql> #include <QSqlQuery> Login::Login(QWidget *parent) : QWidget(parent), ui(new Ui::Login) { ui->setupUi(this); } Login::~Login() { delete ui; } void Login::on_pushButton_clicked() { if(ui->comboBox->currentText()==tr("请选择登录角色")) { QMessageBox::critical(0,tr("登录失败"),tr("请选择正确的登录角色"),QMessageBox::Cancel); } if(ui->comboBox->currentText()==tr("超级管理员登录")) { QSqlQuery query; bool suc=false; query.exec("SELECT * FROM Administrator"); while(query.next()) { if((query.value(0).toString()==ui->AdminEdit->text())&&(query.value(1).toString()==ui->PasswordEdit->text())) { QMessageBox::information(0,tr("登陆成功"),tr("超级管理员:%1 登陆成功").arg(query.value(0).toString())); this->close(); suc=true; break; } } if(!suc) QMessageBox::critical(0,tr("登录失败"),tr("账号或密码错误"),QMessageBox::Cancel); } if(ui->comboBox->currentText()==tr("调度管理员登录")) { QSqlQuery query; bool suc=false; query.exec("SELECT * FROM Dispatcher"); while(query.next()) { if((query.value(0).toString()==ui->AdminEdit->text())&&(query.value(1).toString()==ui->PasswordEdit->text())) { QMessageBox::information(0,tr("登陆成功"),tr("调度管理员:%1 登陆成功").arg(query.value(2).toString())); this->close(); suc=true; break; } } if(!suc) QMessageBox::critical(0,tr("登录失败"),tr("账号或密码错误"),QMessageBox::Cancel); } if(ui->comboBox->currentText()==tr("车队管理员登录")) { QSqlQuery query; bool suc=false; query.exec("SELECT * FROM Manager"); while(query.next()) { if((query.value(0).toString()==ui->AdminEdit->text())&&(query.value(1).toString()==ui->PasswordEdit->text())) { QMessageBox::information(0,tr("登陆成功"),tr("车队管理员:%1 登陆成功").arg(query.value(2).toString())); this->close(); suc=true; break; } } if(!suc) QMessageBox::critical(0,tr("登录失败"),tr("账号或密码错误"),QMessageBox::Cancel); } [color=#FF0000]//仅试验了客户这一块,出现了问题 if(ui->comboBox->currentText()==tr("客户登录")) { QSqlQuery query; bool suc=false; query.exec("SELECT * FROM Customers"); while(query.next()) { if((query.value(0).toString()==ui->AdminEdit->text())&&(query.value(1).toString()==ui->PasswordEdit->text())) { QMessageBox::information(0,tr("登陆成功"),tr("客户:%1 登陆成功").arg(query.value(2).toString())); this->close(); //c.ID=query.value(0).toInt(); c.ID=10000; suc=true; break; } } if(suc) { c.show(); } else QMessageBox::critical(0,tr("登录失败"),tr("账号或密码错误"),QMessageBox::Cancel); } } //Login.cpp #ifndef CUSTOMER_H #define CUSTOMER_H #include <QWidget> namespace Ui { class Customer; } class Customer : public QWidget { Q_OBJECT public: int ID; explicit Customer(QWidget *parent = 0); ~Customer(); private: Ui::Customer *ui; }; #endif // CUSTOMER_H #include "customer.h" #include "ui_customer.h" Customer::Customer(QWidget *parent) : QWidget(parent), ui(new Ui::Customer) { ui->setupUi(this); ui->label->setText(tr("当前ID:%1").arg(ID)); } Customer::~Customer() { delete ui; } //Customer.cpp ``` 多谢大神帮助,感激不尽

Qt怎么高亮显示同名变量?

如题,就像VS一样,设置同名变量的高亮方式,默认的太布明显了。

子窗口调用父窗口的方法或者使用父窗口的成员变量

我们在开发中,常常会遇到在子窗口调用父窗口的方法或者使用父窗口的成员变量的情况。 对于子窗口使用父窗口的变量,我能想到的方法有: (1)构造函数里面增加参数,构造的时候直接把需要用到的变量传进去; (2)父窗口提供接口函数,在子窗口调用父窗口的函数,去获取变量值。 这两种那种更好?对于软件工程以及软件设计模式的开闭原则、低耦合高内聚来说,哪种更合理?或者是不是有更好的办法? 然后是子窗口调用父窗口的函数: (1)构造函数中,直接将父窗口的指针(句柄)传入,需要时,可以通过指针直接调用; (2)子窗口提供设置回调函数的接口,父窗口提前调用接口设置好回调函数,待需要调用的时候,直接调用这个回调函数; (3)发送消息,利用消息机制。比如MFC的消息机制,Qt的信号与槽等等。 总感觉消息机制,是最合理的,但是消息机制,比较麻烦,要写的地方比较多,而通过指针调用的方式,更加方便,不过总感觉这种方式不太好,会不会破坏程序的开闭原则、低耦合高内聚等等。我分析不出来,希望有大神,可以指点一二。

Qt不同版本环境变量命令冲突怎么办?

之前装了PyQt4,里面自带了一些Qt4的组件,设置了环境变量,环境变量路径下有qmake.exe。 现在又装了Qt5,设置了环境变量,路径下也有qmake.exe。 现在当我进行PyQt和Qt开发的时候,需要将这两个环境变量顺序调换,否则会因为调用不同版本的qmake.exe而报错。 有没有简单一些的解决办法? 谢谢啦!

QT局部变量内存释放问题

![图片说明](https://img-ask.csdn.net/upload/201801/23/1516716188_998491.png) 上图圈红的代码,按钮不显示。我可以理解为。函数调用栈内存释放。导致按钮对象被释放。 ![图片说明](https://img-ask.csdn.net/upload/201801/23/1516716286_150640.png) 这个图中的QPainter q 不是也是局部变量对象么,为什么就能将资源图片显示到窗体上呢? 由于这两个的区别,我有点不确定以后开发,应该如何构建对象了。我是C++、QT新手。不知道哪个知识没有学到位,请各位大拿指点下,谢谢。

两个类互相是对方的成员变量指针

比如有A,B两个类: class A { public: A(); ~A{}; private: B *b; }; ``` ``` class B { public: B(); ~A{}; private: A *a; }; 这代表什么意思,用什么特殊的含义么?

qt调试想单步一直监视某一变量的变化,但一直看不到

qt调试想单步一直监视某一变量的变化,选中locals and expressions 还是只有空白没有变量显示

QT中使用变量往数据库中数据的插入,sql语句怎么写?

Qt中如何把控件的text值何其他的变量一起写入sql数据库,插入语句如何写?

Qt使用Pro做条件判断的变量值设置的问题

``` CONFIG += widget-buildlib !widget-buildlib{ LIBS += -L$$PROJECT_LIBDIR -l$$LIBWIDGET_NAME } else{ SOURCES += widget.cpp HEADERS += widget.h FORMS += widget.ui } ``` 以上pro文件里只对CONFIG这个特殊变量增加了widget-buildlib这个值,在后面的条件判断语句中,直接用了这个值来做判断,这里不应该是一个变量吗,怎么用值来判断呢?

qt-c++,为啥我的bool变量不能赋值,一直提示只读错误?

![成员变量](https://img-ask.csdn.net/upload/201910/03/1570080702_280011.png)![函数内部](https://img-ask.csdn.net/upload/201910/03/1570080715_936666.png) 我用信号和槽传递了一些变量,只是那些变量是const属性的,所以我的信号和槽也加了const属性,但是不知道为啥就是不能类里面的成员变量m_one,等不能接收bool属性的值,但是我自己在函数内部新建一个bool变量的值就不报错了。 ![因为这个函数里都是const属性,所以我要用信号传递,也要加const才不报错](https://img-ask.csdn.net/upload/201910/03/1570081796_892433.png) ![图片说明](https://img-ask.csdn.net/upload/201910/03/1570081867_831072.png) 如果不加const就会有这样的错误: ![图片说明](https://img-ask.csdn.net/upload/201910/03/1570084924_234320.png)

QT Creator程序报出异常,环境变量也配置了,不知什么原因,求解

在qt creator中#include<QAbstractSocket>报出,没有文件和目录,环境变量也配置了,其他的include也没有报错

新装的QT5.5构建时一直出错

![图片说明](https://img-ask.csdn.net/upload/201510/22/1445513257_76183.png) 在项目-构建环境哪里,勾选了清除系统环境变量,只使用QT的环境变量,然后QT项目就可以构建了,但非QT项目还是出现原来的错误==

QT如何使用textbrowser动态显示变量的值

如何使用QT动态显示变量内容么???我正在执行一个函数,希望在执行过程中用textbrowser呈现变量内容,但是现在它只会直接弹最后的内容,不会变化 即使把ui->setText放入函数运行间也是如此 ![![![![图片说明](https://img-ask.csdn.net/upload/201712/04/1512376126_497358.png)图片说明](https://img-ask.csdn.net/upload/201712/04/1512376093_405427.png)图片说明](https://img-ask.csdn.net/upload/201712/04/1512376087_454398.png)图片说明](https://img-ask.csdn.net/upload/201712/04/1512376082_178396.png)

QT安装后,运行后总出错,要疯了。

![图片说明](https://img-ask.csdn.net/upload/201506/15/1434376655_417265.jpg) 就这个,运行程序就出现一堆类似错误。minGW 和GDB包括环境变量都配置还是这个问题。why???都重装了好几次。求高手解答。

qt 在main外面定义变量时出错

这是main里面的一段,编译的时候总是显示 error: expected initializer before '*' token Game* game; 请各位帮忙看看 #include <QApplication> #include "game.h" Game* game; int main(int argc, char *argv[]) { QApplication a(argc, argv); game=new Game(); game->show(); return a.exec(); }

qt 连接Access数据库出错

qt 连接Access数据库出错[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动程序 QODBC3:Unable to connect 我已经在控制面板里配置了数据源,选择的是Microsoft Access Driver (*.mdb, *.accdb)驱动器,开发环境Qt5, Access2013, win10 db = QSqlDatabase::addDatabase("QODBC", "test"); QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};FIL={MS Access};DBQ=E:\\Project\\data.accdb"); db.setDatabaseName(dsn); // 打开数据库 if(!db.open()) { QMessageBox::critical(0,QObject::tr("Database Error"), db.lastError().text()); return false; }

C++(Qt问题)类函数调用问题

QPushButton *btn = new QPushButton(QObject::tr("quit"),this); 在这句话中,为什么QObject::tr("quit")不会报错,调用类的成员函数不是要通过具体的对象来调用的吗?为什么QObject::tr()可以通过,QObject不是类名吗?刚写Qt和C++不懂,求教

Qt平滑处理图片失败,异常求解

# Qt平滑图片出错,异常求解,希望能够获得帮助。。。。。 将图片转为灰度图进行平滑处理,代码如下 ![图片说明](https://img-ask.csdn.net/upload/202005/05/1588674713_675153.png) 选择图片 ![图片说明](https://img-ask.csdn.net/upload/202005/05/1588674814_20307.png) 运行结果 ![图片说明](https://img-ask.csdn.net/upload/202005/05/1588674829_877542.png) 图片全部为黑色,求解 大佬帮帮我吧!

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

组成原理课程设计(实现机器数的真值还原等功能)

实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

javaWeb图书馆管理系统源码mysql版本

系统介绍 图书馆管理系统主要的目的是实现图书馆的信息化管理。图书馆的主要业务就是新书的借阅和归还,因此系统最核心的功能便是实现图书的借阅和归还。此外,还需要提供图书的信息查询、读者图书借阅情况的查询等

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

Java8零基础入门视频教程

Java8零基础入门视频教程

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

TTP229触摸代码以及触摸返回值处理

自己总结的ttp229触摸代码,触摸代码以及触摸按键处理

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Ubuntu18.04安装教程

Ubuntu18.04.1安装一、准备工作1.下载Ubuntu18.04.1 LTS2.制作U盘启动盘3.准备 Ubuntu18.04.1 的硬盘空间二、安装Ubuntu18.04.1三、安装后的一些工作1.安装输入法2.更换软件源四、双系统如何卸载Ubuntu18.04.1新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列...

快速排序---(面试碰到过好几次)

原理:    快速排序,说白了就是给基准数据找其正确索引位置的过程.    如下图所示,假设最开始的基准数据为数组第一个元素23,则首先用一个临时变量去存储基准数据,即tmp=23;然后分别从数组的两端扫描数组,设两个指示标志:low指向起始位置,high指向末尾.    首先从后半部分开始,如果扫描到的值大于基准数据就让high减1,如果发现有元素比该基准数据的值小(如上图中18&amp;lt...

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

HTML期末大作业

这是我自己做的HTML期末大作业,花了很多时间,稍加修改就可以作为自己的作业了,而且也可以作为学习参考

Python数据挖掘简易入门

Python数据挖掘简易入门

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

C++语言基础视频教程

C++语言基础视频教程

UnityLicence

UnityLicence

软件测试2小时入门

软件测试2小时入门

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

Python数据分析师-实战系列

系列课程主要包括Python数据分析必备工具包,数据分析案例实战,核心算法实战与企业级数据分析与建模解决方案实战,建议大家按照系列课程阶段顺序进行学习。所有数据集均为企业收集的真实数据集,整体风格以实战为导向,通俗讲解Python数据分析核心技巧与实战解决方案。

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

超详细MySQL安装及基本使用教程

一、下载MySQL 首先,去数据库的官网http://www.mysql.com下载MySQL。 点击进入后的首页如下:  然后点击downloads,community,选择MySQL Community Server。如下图:  滑到下面,找到Recommended Download,然后点击go to download page。如下图:  点击download进入下载页面选择No...

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

爬取妹子图片(简单入门)

安装第三方请求库 requests 被网站禁止了访问 原因是我们是Python过来的 重新给一段 可能还是存在用不了,使用网页的 编写代码 上面注意看匹配内容 User-Agent:请求对象 AppleWebKit:请求内核 Chrome浏览器 //请求网页 import requests import re //正则表达式 就是去不规则的网页里面提取有规律的信息 headers = { 'User-Agent':'存放浏览器里面的' } response = requests.get

web网页制作期末大作业

分享思维,改变世界. web网页制作,期末大作业. 所用技术:html css javascript 分享所学所得

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问