qt关于程序崩溃

qt程序崩溃最常见的应该是内存溢出,这是编程习惯造成的,

比如:用Qlist的时候,没有检查Qlist.size()的大小,直接就.at()了,这样就造成程序崩溃。

还有就是指针为NULL,结果做为参数或者直接操作使用。也会造成程序崩溃。

所以任何函数,只要带有参数。一定要对参数进行判断,特别是指针或者引用。

接下来介绍一种奇葩的程序崩溃现象。

第一步,我们在ui界面上添加一个按钮Qpushbutton,和一个QlineEdit,

第二步,在按钮的槽函数中写如下代码;

void Widget::on_pushButton_clicked()
{
    for (int i = 0; i < 10; i++)
    {
        ui->lineEdit->setText (i);
    }
}

然后我们运行程序,我们可以看到界面上只会显示9这个数字;

接着:我们改一下代码:

void Widget::on_pushButton_clicked()
{
    for (int i = 0; i < 10; i++)
    {
        ui->lineEdit->setText (i);
        QThread::msleep (1);
    }
}

我们添加一个延时1秒,我们运行后看到的是,9秒后显示的数字是9,之前都没有显示任何数字;

而且会发生一件事情就是,如果你点击其他按钮,或者空白区域会造成程序崩溃;

为什么会造成崩溃,我想不用说大家也清楚吧,因为按钮的点击槽函数还没有执行完成,又点击了其他事件。因为程序是单线程,还在for循环中运行,所以崩溃掉了,

还有一点就 是:明明ui->lineEdit设置了9次文本,为什么只显示了一次,也是因为单线程原因,要等到按钮槽函数运行完之后才会去调用界面的信号;所以,在编码的时候

一定要将耗时比较长的处理事件放到线程去执行,否则程序会出现崩溃或者卡顿。


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vqt5_qt6

你的鼓励是我们创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值