• 3748阅读
  • 4回复

[提问][已解决]QT类型转换问题 [复制链接]

上一主题 下一主题
离线hjkcai
 
只看楼主 倒序阅读 楼主  发表于: 2011-11-17
代码如下:
QAction *a = qobject_cast<QAction*>(const_cast<QObject*>(sender()));
a->setObjectName(tr("true"));
a->setChecked(true);

a的值不为0,也是是正确的,可是在setChecked出错,返回SIGSEGV错误信号
可是setObjectName都可以的呀,为什么setChecked就不行?
sender()返回的并不为0,指针指向的也是QAction类型

还是谢谢大家的解答,我自己已经解决了,是因为堆栈错误而引发的,并不是类型转换的问题
离线jdwx

只看该作者 1楼 发表于: 2011-11-17
回 楼主(hjkcai) 的帖子
关键是要a != 0 才能进行下一步操作。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hjkcai
只看该作者 2楼 发表于: 2011-11-17
回 1楼(jdwx) 的帖子
a就是不等于0的,获取到的地址也是正确的
离线jdwx

只看该作者 3楼 发表于: 2011-11-17
回 2楼(hjkcai) 的帖子
QAction *a = qobject_cast<QAction*>(sender());
试试这样写。
不明白为什么要加const_cast<QObject*>(),
sender先被转换成QObject,再被转换成QAction,QObject有setObjectName,可是没有setChecked,所以出错。

发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hjkcai
只看该作者 4楼 发表于: 2011-11-18
回 3楼(jdwx) 的帖子
加const_cast为了去掉sender()返回的只读变量,不过好像也没什么用就是。

QAction *a = qobject_cast<QAction*>(sender());
这样也是不行的
快速回复
限100 字节
 
上一个 下一个