在Qt开发过程中,项目中有时需要打开超链接,例如:打开购买网页,技术支持网页,帮助等网页,这里QT的界面显示一个超链接,当用户点击这个超链接时,弹出相应url的网页,本篇介绍使用Qlabel显示超链接,点击打开url网页。
首先把网址及要显示的内容设置到QLabel的setText()里,然后再把打开超链接设为true, setOpenExternalLinks(true)
例如:
ui->labelLink->setOpenExternalLinks(true);
ui->labelLink->setText(QString("<a href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
这个就是默认的带下划线,蓝色字体的超链接标识显示。
当用户点击蓝色字体区域时,会自动打开百度网页。
因为这是默认的,所以自带下划线,如果不想要下划线可以吗,这个时候需要设置text-decoration为none,代码如下:
ui->labelLink2->setText(QString("<a style='text-decoration:none' href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
运行效果如下:
从上面可以看出,第一个超链接已经去掉下划线了。
如果想修改颜色呢:设置颜色风格即可style='color:#FF0000'
ui->labelLink3->setText(QString("<a style='color:#FF0000' href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
运行效果:
第3个超链接,颜色设置为红色。
既想改变颜色,又要去掉下划线呢:style='color:#00FF00;text-decoration:none'
ui->labelLink4->setText(QString("<a style='color:#00FF00;text-decoration:none' href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
运行效果:
完整的项目代码如下:
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACE
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
void initView();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
initView();
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::initView()
{
ui->labelLink->setOpenExternalLinks(true);
ui->labelLink2->setOpenExternalLinks(true);
ui->labelLink3->setOpenExternalLinks(true);
ui->labelLink4->setOpenExternalLinks(true);
ui->labelLink->setText(QString("<a href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
//去掉下划线
ui->labelLink2->setText(QString("<a style='text-decoration:none' href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
//设置文字颜色FF0000
ui->labelLink3->setText(QString("<a style='color:#FF0000' href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
QString str="<style> a:hover{color:#FF0000;text-decoration:none}</style><a style='color: blue;'href =\"https://www.baidu.com\">AAAAA</a>";
//设置文字颜色为00FF00,去掉下划线
ui->labelLink4->setText(QString("<a style='color:#00FF00;text-decoration:none' href=\"https://www.baidu.com\">https://www.baidu.com</a>"));
}