Qt-QLabel

20 篇文章 0 订阅
这个示例展示了如何在Qt应用程序中创建一个窗口,使用QMovie类播放GIF动画,并在QLabel中设置超链接。当用户点击或悬停在超链接上时,会触发相应的槽函数Act和Hover,分别打印点击和悬停的URL。
摘要由CSDN通过智能技术生成

main.cpp

#include "myqt.h"
#include <QtWidgets/QApplication>
#include <QtWidgets>
//#include <QDebug>
//#include <iostream>
//#include <windows.h>

using namespace Qt;
using namespace std;

int main(int argc, char *argv[])
{
    QApplication a(argc, argv); //进行信号与槽的处理,放到QWight前面
    myqt w;
    w.show();
    return a.exec();
}

myqt.cpp

#include "myqt.h"
#include <QMovie>
myqt::myqt(QWidget *parent) : QWidget(parent)
{
    ui.setupUi(this);
    QString str = QStringLiteral("测试的中文");
    //ui.label->setText(str);
    //手动创建QLabel 播放gif动画
    QLabel* lab2 = new QLabel(this);    //加入this相当于在窗体内部显示Label标签,否则将会创建新的窗体
    lab2->setGeometry(60, 50, 250, 400);
    lab2->setStyleSheet("background-color:rgb(161,200,247);");
    lab2->setAlignment(Qt::AlignCenter);
    QMovie* mov = new QMovie("R-C.gif");
    mov->setScaledSize(QSize(250, 400));
    lab2->setMovie(mov);
    //lab2->show(); //在主窗体内部,无需设置,另开窗口需要设置显示
    mov->start();

    ui.label->setSelection(0,4);    //设置label的选中文字
}

myqt.h

#pragma once

#include <QtWidgets/QWidget>
#include "ui_myqt.h"
#include <QDebug>
class myqt : public QWidget
{
    Q_OBJECT

public:
    myqt(QWidget *parent = Q_NULLPTR);
public slots:
    void Act(QString url) //点击超链接触发的槽函数
    {
        qDebug() << "click" << url << endl;
        qDebug() << ui.label->selectedText();
    }
    void Hover(QString url) //鼠标移动到超链接执行的槽函数
    {
        qDebug() << "Hover" << url << endl;
        qDebug() << ui.label->selectedText();   //显示选中的文本
    }
private:
    Ui::myqtClass ui;
};

ui_myqt.h

#ifndef UI_MYQT_H
#define UI_MYQT_H

#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QWidget>

QT_BEGIN_NAMESPACE

class Ui_myqtClass
{
public:
    QPushButton *closeWindow;
    QPushButton *minwindow;
    QLabel *label;
    QLabel *labe2;

    void setupUi(QWidget *myqtClass)
    {
        if (myqtClass->objectName().isEmpty())
            myqtClass->setObjectName(QString::fromUtf8("myqtClass"));
        myqtClass->resize(860, 614);
        closeWindow = new QPushButton(myqtClass);
        closeWindow->setObjectName(QString::fromUtf8("closeWindow"));
        closeWindow->setGeometry(QRect(470, 390, 93, 28));
        minwindow = new QPushButton(myqtClass);
        minwindow->setObjectName(QString::fromUtf8("minwindow"));
        minwindow->setGeometry(QRect(470, 440, 93, 28));
        label = new QLabel(myqtClass);
        label->setObjectName(QString::fromUtf8("label"));
        label->setGeometry(QRect(550, 70, 261, 121));
        label->setStyleSheet(QString::fromUtf8("background-color: rgb(85, 255, 255);\n"
"font: 16pt \"\351\273\221\344\275\223\";\n"
"color: rgb(255, 0, 127);"));
        label->setAlignment(Qt::AlignCenter);
        label->setTextInteractionFlags(Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextEditable|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse);
        labe2 = new QLabel(myqtClass);
        labe2->setObjectName(QString::fromUtf8("labe2"));
        labe2->setGeometry(QRect(580, 180, 281, 441));
        labe2->setStyleSheet(QString::fromUtf8("image: url(:/myqt/R-C.gif);\n"
""));

        retranslateUi(myqtClass);
        QObject::connect(minwindow, SIGNAL(clicked()), myqtClass, SLOT(showMinimized()));
        QObject::connect(closeWindow, SIGNAL(clicked()), myqtClass, SLOT(close()));
        QObject::connect(label, SIGNAL(linkActivated(QString)), myqtClass, SLOT(Act(QString)));
        QObject::connect(label, SIGNAL(linkHovered(QString)), myqtClass, SLOT(Hover(QString)));

        QMetaObject::connectSlotsByName(myqtClass);
    } // setupUi

    void retranslateUi(QWidget *myqtClass)
    {
        myqtClass->setWindowTitle(QCoreApplication::translate("myqtClass", "myqt", nullptr));
        closeWindow->setText(QCoreApplication::translate("myqtClass", "\345\205\263\351\227\255\347\252\227\345\217\243", nullptr));
        minwindow->setText(QCoreApplication::translate("myqtClass", "\346\234\200\345\260\217\345\214\226\347\252\227\345\217\243", nullptr));
        label->setText(QCoreApplication::translate("myqtClass", "<html><head/><body><p>TextLabel<br/>nihao<a href=\"www.baidu.com\"><span style=\" text-decoration: underline; color:#0000ff;\">\351\223\276\346\216\245</span></a></p></body></html>", nullptr));
        labe2->setText(QString());
    } // retranslateUi

};

namespace Ui {
    class myqtClass: public Ui_myqtClass {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_MYQT_H

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值