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

来源:互联网 发布:网络诈骗怎么报警呢 编辑:程序博客网 时间:2024/05/16 17:29
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)之后

原创粉丝点击