首页| 论坛| 消息

标题:为什么鼠标点击标签后程序出错?
作者:y1363386323
日期:2017-03-15 12:09
内容:

如上图所示,这是一个很小的程序,可什么鼠标点击标签123456后程序出错?


#1 [大漠之鹰 03-15 15:42]
段错误吧?child空指针访问。你的centralWidget没有child
#2 [大漠之鹰 03-15 15:42]
把最后的qDebug那行去掉应该就可以啦
#3 回 大漠之鹰 的帖子 [y1363386323 03-16 21:31]
大漠之鹰:段错误吧?child空指针访问。你的centralWidget没有child(2017-03-15 15:42)
唉,你比我还菜,已经解决了,是Qt的一个BUG
#4 [大漠之鹰 03-17 08:39]
你好,我们对客户提供优化的Qt源码,关于你说的Qt的bug,我很重视。查看了QT的相关代码,并且对你的程序进行了仔细的调试,发现这并不像你说的那样是Qt的Bug,只是你刚接触Qt,应用不太熟练导致的意识错误而已
void QMainWindow::setCentralWidget(QWidget *widget)
{
Q_D(QMainWindow);
if (d->layout->centralWidget() && d->layout->centralWidget() != widget) {
d->layout->centralWidget()->hide();
d->layout->centralWidget()->deleteLater();
}
d->layout->setCentralWidget(widget);
}
1、这是QMainWindow 关于setCentralWidget 的代码,这你调用的时候ui->centralWidget 已经被delete了导致你在 mousePressEvent里边调用出现段错误。访问centralWidget应该调用this->centralWidget()
2、现在label是centralWidget,label没有子窗口,你调用childAt获取到的是个空指针,最后一句访问空指针依然会是段错误。
3、在获取指针的时候必须判断指针是否为NULL,在释放指针的时候必须赋值为NULL,编程要严谨
#5 回 大漠之鹰 的帖子 [y1363386323 04-05 15:58]
大漠之鹰:你好,我们对客户提供优化的Qt源码,关于你说的Qt的bug,我很重视。查看了QT的相关代码,并且对你的程序进行了仔细的调试,发现这并不像你说的那样是Qt的Bug,只是你刚接触Qt,应用不太熟练导致的意识错误而已
void QMainWindow::setCentralWidget(QWidget *widget)
{
..(2017-03-17 08:39)
感激不尽!

<< 1 2 >> (1/2)

回复 发表
主题 版块