PDA

View Full Version : Issue with loading the link clicked page in new tab.



ejoshva
9th June 2015, 08:17
I am making a browser in mac 10.9.5 where in whenever a link is clicked, I want to open that link in a new tab.

Attached the code which I tried to implement the same, but I am getting link page in a new window.

Kindly help me to resolve this issue.



11196



#include "WebEnginePage.h"

WebEnginePage::WebEnginePage(QObject *parent)
: QWebEnginePage(parent)
{
connect(this,SIGNAL(urlChanged(QUrl)),this,SLOT(lo adInTab(QUrl)));
}

WebEnginePage::~WebEnginePage()
{

}

void WebEnginePage::loadInTab(QUrl url)
{
qDebug()<<"Page : "<<url;
emit pageInNewTab(url);

}


#include "WebEngineView.h"

WebEngineView::WebEngineView(QWidget *parent)
: QWebEngineView(parent)
{
webPage = new WebEnginePage(this);
setPage(webPage);
setGeometry(0,35,dw.width(),dw.height()-35);

// connect(page(),SIGNAL(urlChanged(QUrl)),this,SLOT( loadInNewTab(QUrl)));
connect(page(),SIGNAL(pageInNewTab(QUrl)),this,SLO T(loadInNewTab(QUrl)));
hide();
connect(this, SIGNAL(loadFinished(bool)), this, SLOT(onPageLoadFinished(bool)));
}

void WebEngineView::onPageLoadFinished(bool value)
{
qDebug()<<"WebEngineView::onPageLoadFinished";
show();
emit newTab(this);
}
WebEngineView::~WebEngineView()
{

}

WebEngineView *WebEngineView::createWindow(QWebEnginePage::WebWi ndowType type)
{
Q_UNUSED(type);
qDebug()<<"WebEngineView::createWindow";
WebEngineView *webView = new WebEngineView();
qDebug()<<"Index : "<<++index;
WebEnginePage *newWeb = new WebEnginePage(webView);
webView->setAttribute(Qt::WA_DeleteOnClose, true);
webView->setPage(newWeb);
//webView->show();

return webView;
}



void WebEngineView::loadInNewTab(QUrl url)
{
qDebug()<<"WebEngineView "<<index<<" : "<<url;
// createWindow(QWebEnginePage::WebBrowserTab);
}
int WebEngineView::getIndex() const
{
return index;
}

void WebEngineView::setIndex(int value)
{
index = value;
}


#include "TabWindow.h"

TabWindow::TabWindow(QWidget *parent)
: QMainWindow(parent)
{
weView = new WebEngineView(this);
weView->setGeometry(0,50,dw.width(),dw.height());
loadedUrl = QUrl("http://www.google.co.in");
//weView->load(QUrl(loadedUrl));
weView->webPage->load(loadedUrl);
QWidget *centralWidget = new QWidget(this);
tabWidget = new QTabWidget(centralWidget);
tabWidget->setTabsClosable(true);
//tabWidget->setElideMode(Qt::ElideRight);

tabWidget->setFixedSize(dw.width(),dw.height());
loadedUrl = QUrl("http://www.google.co.in");
tabWidget->addTab(weView,loadedUrl.host());
setCentralWidget(centralWidget);
currentIndex = 0;
weView->setIndex(currentIndex);

//weViewNew = new WebEngineView(this);
connect(weView,SIGNAL(newTab(WebEngineView&)),this,SLOT(loadNewTab(WebEngineView7)));
connect(tabWidget,SIGNAL(tabCloseRequested(int)),t his,SLOT(closeTab(int)));
}

TabWindow::~TabWindow()
{

}

void TabWindow::closeTab(int index)
{
tabWidget->removeTab(index);
}


void TabWindow::loadNewTab(WebEngineView *webView)
{
//webView->show();
tabWidget->addTab(webView,webView->webPage->url().host());
//tabWidget->setCurrentIndex(currentIndex);
qDebug()<<"TabWindow::loadNewTab : ";


}

ejoshva
9th June 2015, 11:21
I just checked the WebWindowType being triggered from QWebPage. It's 1 which is WebBrowserWindow.

I want to make it WebBrowserTab.

Kindly help me to open the link in a new tab instead of new window.

wysota
9th June 2015, 12:31
WebView does not have "tabs". For a browser that is a separate window and what you do with that window (e.g. make it a tab) is your own responsibility.

ejoshva
10th June 2015, 06:15
Thanks Wysota for the info.

11198 Attachment is the working code.

I have resolved it. Now I am able to open the link in a new tab.