Qt ui控件代码先后顺序的tips

MyMainWindow::MyMainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MyMainWindow)
{
    manger = new QNetworkAccessManager(this);
    connect(manger, SIGNAL(finished(QNetworkReply *)), this, SLOT(replyFinished(QNetworkReply *)));
    manger->get(QNetworkRequest(QUrl("http://blog.csdn.net/lankin2013/article/details/41855013")));
    //manger1 = new QNetworkAccessManager(this);

    ui->setupUi(this);
    ui->progressBar->hide();
}


这是一段很普通的代码,是我尝试Qt的http下载代码中遇到的一个小问题,其实以前也遇到过,不过后来不以为意就忽略掉了。现在就记录下来,以防以后犯错。

错误:我最开始把ui->setupUi(this)和ui->progressBar->hide()这两句话写的时候换了个位置,然后程序异常了。

解决方法:全部注释逐句检查,以为是其他地方写错了。后来看到因为这句出了问题,想了一下,意识到了问题。

Qt下的异常结束有几种情况(写项目总结的):(1)添加三方库时只添加了静态库,而程序运行时缺少动态库,所以手动将dll文件添加进程序目录

                                                                            (2)变量未初始化或在使用前就已经析构掉了,换句话说就是访问你无权访问的空间,linux下常称为段错误。

回归到这个问题,思考ui->setupUi(this)的作用,可以点开这个文件,看到QProgressBar *progressBar;progressBar = new QProgressBar(centralWidget);也就是你在progressBar这个变量还不存在时就去设置它的属性,当然会引起异常。

Tips:ui下的控件设置其属性时请务必写在ui->setupUi(this)之后

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qq_26654257

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

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

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

打赏作者

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

抵扣说明:

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

余额充值