Para evitar que la aplicación se congele... usa un hilo:
To prevent the application from freezing ... a thread can be used:
The thread:
#include <QUrl>
#include <QDesktopServices>
#include <QThread>
#include <QLabel>
#include <QHBoxLayout>
public:
void closePopUp();
void run();
private:
};
url = u;
qW = w;
}
void MyThread::closePopUp(){
if( qW ){
qW = 0;
}
}
void MyThread::run() {
closePopUp();
terminate();
wait();
}
#include <QUrl>
#include <QDesktopServices>
#include <QThread>
#include <QLabel>
#include <QHBoxLayout>
class MyThread : public QThread {
public:
MyThread(QUrl, QWidget* = 0);
void closePopUp();
void run();
private:
QUrl url;
QWidget* qW;
};
MyThread::MyThread(QUrl u, QWidget* w ){
url = u;
qW = w;
}
void MyThread::closePopUp(){
if( qW ){
qW->~QWidget();
qW = 0;
}
}
void MyThread::run() {
QDesktopServices::openUrl(url);
closePopUp();
terminate();
wait();
}
To copy to clipboard, switch view to plain text mode
The functions:
qLabel->setText( url.toString() );
qL->addWidget(qLabel);
qW->setLayout(qL);
qW->setWindowFlags( Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::SubWindow
| Qt::WindowStaysOnTopHint );
qW->setWindowTitle("Opening url...");
qW->show();
qW->setFixedSize(qW->width(), qW->height() );
return qW;
}
MyThread* open_browser(const QString& rUrl, bool b = false ){
MyThread* hilo;
if( b ){
hilo = new MyThread(url, createPopUp(url));
}else{
hilo = new MyThread(url);
}
hilo->start();
return hilo;
}
QWidget* createPopUp(QUrl url){
QWidget* qW = new QWidget();
QLabel* qLabel = new QLabel(qW);
qLabel->setText( url.toString() );
QLayout* qL = new QHBoxLayout(qW);
qL->addWidget(qLabel);
qW->setLayout(qL);
qW->setWindowFlags( Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::SubWindow
| Qt::WindowStaysOnTopHint );
qW->setWindowTitle("Opening url...");
qW->show();
qW->setFixedSize(qW->width(), qW->height() );
return qW;
}
MyThread* open_browser(const QString& rUrl, bool b = false ){
QUrl url = QUrl(rUrl, QUrl::TolerantMode);
MyThread* hilo;
if( b ){
hilo = new MyThread(url, createPopUp(url));
}else{
hilo = new MyThread(url);
}
hilo->start();
return hilo;
}
To copy to clipboard, switch view to plain text mode
The usage:
/*only open*/
open_browser("http://www.ewaewa.com/");
/*open with popup but immediately it is closed*/
MyThread* hilo = open_browser("http://www.ewaewa.com/",true);
hilo->closePopUp();
/*open with popup and close automatically when URL is opened*/
open_browser("http://www.ewaewa.com/",true);
/*only open*/
open_browser("http://www.ewaewa.com/");
/*open with popup but immediately it is closed*/
MyThread* hilo = open_browser("http://www.ewaewa.com/",true);
hilo->closePopUp();
/*open with popup and close automatically when URL is opened*/
open_browser("http://www.ewaewa.com/",true);
To copy to clipboard, switch view to plain text mode
Bookmarks