miércoles, 20 de julio de 2011

Convertir un label en un hipervinculo.

Hay raiz de una consulta en el foro de zonaqt he ampliado mi programa InfoBasic para ponerle un dialogo con un enlace a la esta misma web. Aquí dejo el código:

aboutdialog.h
#ifndef ABOUTDIALOG_H
#define ABOUTDIALOG_H

#include "IForm.h"
#include 

namespace Ui {
    class AboutDialog;
}

class AboutDialog : public QDialog, public IForm
{
    Q_OBJECT

public:
    static const char* HREF;
    static const char* HREF2;
    explicit AboutDialog(QWidget *parent = 0);
    ~AboutDialog();

    virtual void putTexts();
    virtual void setuid();

public slots:
    void onClickLink();

private:
    Ui::AboutDialog *ui;
};

#endif // ABOUTDIALOG_H

aboutdialog.cpp
#include "aboutdialog.h"
#include "ui_aboutdialog.h"
#include 
#include 

const char* AboutDialog::HREF ="Orgía de objetos";
const char* AboutDialog::HREF2 ="Thank you for visiting us.";

AboutDialog::AboutDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::AboutDialog)
{
    ui->setupUi(this);
    putTexts();
    setuid();
}

AboutDialog::~AboutDialog()
{
    delete ui;
}

void AboutDialog::onClickLink()
{
    qDebug("onClickLink");
    QString str = ui->labelLink->text();
    int startIndex = str.indexOf(QString("'"));
    int endIndex = str.indexOf(QString("'"), ++startIndex);
    qDebug(str.mid(startIndex, endIndex).toLocal8Bit().data());
    QDesktopServices::openUrl(QUrl(str.mid(startIndex, endIndex - startIndex)));
    ui->labelLink->setText(HREF2);
}

void AboutDialog::putTexts()
{
    ui->labelLink->setText(HREF);
    ui->labelLink->adjustSize();
}

void AboutDialog::setuid()
{
    connect(ui->labelLink, SIGNAL(linkActivated(QString)), this, SLOT(onClickLink()));
}

Este código abre la dirección del QLabel en el explorador por defecto.

En los próximos días voy a intentar sacar tiempo para subir el código fuente.

No hay comentarios:

Publicar un comentario