• 3390阅读
  • 6回复

[提问]为什么鼠标点击标签后程序出错? [复制链接]

上一主题 下一主题
离线y1363386323
 

只看楼主 倒序阅读 楼主  发表于: 2017-03-15

如上图所示,这是一个很小的程序,可什么鼠标点击标签123456后程序出错
离线大漠之鹰

只看该作者 1楼 发表于: 2017-03-15
段错误吧?child空指针访问。你的centralWidget没有child
本是后山人,偶作前堂客,醉舞经阁半卷书,坐井说天阔。大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错
QQ:874164244
离线大漠之鹰

只看该作者 2楼 发表于: 2017-03-15
把最后的qDebug那行去掉应该就可以啦
本是后山人,偶作前堂客,醉舞经阁半卷书,坐井说天阔。大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错
QQ:874164244
离线y1363386323

只看该作者 3楼 发表于: 2017-03-16
回 大漠之鹰 的帖子
大漠之鹰:段错误吧?child空指针访问。你的centralWidget没有child (2017-03-15 15:42) 

唉,你比我还菜,已经解决了,是Qt的一个BUG
离线大漠之鹰

只看该作者 4楼 发表于: 2017-03-17
你好,我们对客户提供优化的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,编程要严谨
本是后山人,偶作前堂客,醉舞经阁半卷书,坐井说天阔。大志戏功名,海斗量福祸,论到囊中羞涩时,怒指乾坤错
QQ:874164244
离线y1363386323

只看该作者 5楼 发表于: 2017-04-05
回 大漠之鹰 的帖子
大漠之鹰:你好,我们对客户提供优化的Qt源码,关于你说的Qt的bug,我很重视。查看了QT的相关代码,并且对你的程序进行了仔细的调试,发现这并不像你说的那样是Qt的Bug,只是你刚接触Qt,应用不太熟练导致的意识错误而已
void QMainWindow::setCentralWidget(QWidget *widget)
{
   .. (2017-03-17 08:39) 

感激不尽!
离线y1363386323

只看该作者 6楼 发表于: 2017-04-05



1.中文汉化不完整,有些地方依旧是英文
2.不支持MYSQL5.7.12数据库的事物
3.当继承一个类时,没有自动为该类加上头文件
4.重新实现一个事件时,事件中的参数没有自动带上
5.当使用QMessageBox::warning()函数时,弹出的警告对话框没有提示音
6.现在的帮助文档很丑,我喜欢以前Qt5.5的帮助文档


First of all I come from China.
I have several problems in the process of using Qt you have not been resolved.

1)Qt Creator in some places there is no complete translation, there are still some places in English.
2)I am using the latest version of Qt5.7, but this version does not support the transaction of the MySQL5.7.12 database.
3)When I re implementation of a class, for example: to realize QPushButton, Qt does not automatically add "#include <QPushButton>","Q_OBJECT","explicit".
4)When I re implement an event, such as: closeEvent(), Qt does not automatically fill the parameters for this event.
5)When using QMessageBox:: warning () function, the pop-up warning dialog box does not prompt the sound.
6)Qt5.7 help documentation is ugly, I love Qt5.5 help document, because it is more beautiful.


上面是Qt需要改进的地方,我很久以前就把这些问题反馈到Qt公司了,可Qt公司一直没做改进,
我不知道是不是我没有反馈到正确的地方,希望你能把上面的问题反馈上去,我都帮你写好了。
@大漠之鹰     谢谢!
本帖提到的人: @大漠之鹰
快速回复
限100 字节
 
上一个 下一个