在qt中对于浏览器应用,是使用的QWebEngineView类,通过load方法加载要浏览的url网址,并调用show来显示。而进度条是使用QProgressBar类,可以在任意控件通过addWidget方法显示出来。
//初始化进度条
progressbar=new QProgressBar;
//把进度条添加到任务栏
ui->statusBar->addWidget(progressbar);
//初始化WebEngineView浏览器
webview = new QWebEngineView(parent);
webview->load(QUrl("http://www.baidu.com"));
webview->show();
ui->verticalLayout->addWidget(webview);
//urlChanged是当网址发生变化时的信号,参数是一个输出参数QUrl类型,表示新的网址
QObject::connect(webview,SIGNAL(urlChanged(QUrl)),this,SLOT(setUrl(QUrl)));
//titleChanged是对应的标题发生变化,跟上边urlChanged一样
QObject::connect(webview,SIGNAL(titleChanged(QString)),this,SLOT(setTitle(QString)));
//loadProgress是表示浏览器加载的进度显示
QObject::connect(webview,SIGNAL(loadProgress(int)),this,SLOT(setProgress(int)));
//loadFinished是表示浏览器加载完毕与否
QObject::connect(webview,SIGNAL(loadFinished(bool)),this,SLOT(removeProgress(bool)));
void MainWindow::setUrl(QUrl url)
{
ui->lineEdit->setText(url.toString());
}
void MainWindow::setTitle(QString tstring)
{
this->setWindowTitle(tstring);
}
void MainWindow::setProgress(int iValue)
{
//如果进度条隐藏了,则显示它
if(progressbar->isHidden())
progressbar->show();
//根据浏览器的加载进度信号,实时更新进度条
progressbar->setValue(iValue);
}
void MainWindow::removeProgress(bool bHide)
{
//当浏览器加载完时,该标志为true,如出错则为false
if(bHide)
{
progressbar->hide();
ui->statusBar->showMessage(tr("加载完毕"),5000);
}
}