Qt应用开发(基础篇)——标签类QLabel

一、前言

        QLabel标签继承于QFrame,QFrame继承于QWidget,是Qt中最基础也是最常用的控件。

        框架类QFrame介绍

        QLabel不提供用户交互功能,标签的视觉外观可以通过多种方式进行配置,并且可以使用它为其他界面的标签,QLabel可以用来显示以下这些内容:

  • 纯文本:纯文本数据
  • 富文本:又称呼为格式化文本,具有风格、排版等信息,如颜色、式样(黑体、斜体等)、字体尺寸、特性(如超链接)等
  • 显示图像信息
  • 显示gif文件
  • 直接显示一个double或者int类型的数字
  • 什么内容都不显示也可以

         因此在实际项目中,标签可以用来做品名、重量、名称、体积等简要标识,温度、电压、电流、功率等实时信息标识,公司、产品logo的显示,网址、导航等超链接,gif动画,视频文件单帧图片显示,甚至直接设置固定大小用来做占位符。

二、QLabel类

1、text

        该属性代表当前标签文本。

QString text() const                //当前内容
void setText(const QString &)       //设置内容

2、alignment

        该属性代表文本水平和垂直方向对齐,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。

        Qt布局管理

Qt::Alignment alignment() const;        // 获取对齐方式 
void setAlignment(Qt::Alignment align); // 设置对齐方式 

3、indent

        该属性代表文本的缩进值。

int indent() const;             // 获取文本缩进值 
void setIndex(int indent);      //设置文本缩进值 

4、margin

        该属性代表显示内容的边距。

int margin() const;             // 获取边距 
void setMargin(int margin);     // 设置边距 

5、hasSelectedText   

        该属性表示是否有任何选定的文本,如果用户已经选择了部分或全部文本,则hasSelectedText()返回true,否则返回false。

        注意:在标签上设置的textInteractionFlags需要包括TextSelectableByMouse或TextSelectableByKeyboard。

 bool hasSelectedText() const

6、selectedText

        该属性表示所选文本,如果没有选定文本,则此属性的值为空字符串。默认情况下,此属性包含一个空字符串。

        注意:在标签上设置的textInteractionFlags需要包括TextSelectableByMouse或TextSelectableByKeyboard。

QString selectedText() const

7、textInteractionFlags

        该属性表示标签在显示文本时应如何与用户输入交互,默认值为Qt::TextSelectableByMouse。

Qt::TextInteractionFlags textInteractionFlags() const
void setTextInteractionFlags(Qt::TextInteractionFlags flags)

定义描述
Qt::NoTextInteraction不与用户交互
Qt::TextSelectableByMouse可以用鼠标选择文本,并使用上下文菜单或标准键盘快捷键将文本复制到剪贴板。
Qt::TextSelectableByKeyboard可以用键盘上的光标键选择文本。显示一个文本光标。
Qt::LinksAccessibleByMouse链接可以用鼠标突出显示和激活。
Qt::LinksAccessibleByKeyboard链接可以使用tab键聚焦,并使用enter键激活。
Qt::TextEditable文本是可编辑的。
Qt::TextEditorInteractionTextSelectableByMouse | TextSelectableByKeyboard | TextEditable
Qt::TextBrowserInteractionTextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard

8、openExternalLinks

      该属性表示QLabel是否应该使用QDesktopServices::openUrl()自动打开链接,而不是发出linkActivated()信号。

        注意:标签上设置的textInteractionFlags需要包括LinksAccessibleByMouse或LinksAccessibleByKeyboard。

bool openExternalLinks() const
void setOpenExternalLinks(bool open)

9、pixmap

        该属性表示当前显示的图像信息。

const QPixmap *pixmap() const;         // 获取显示的图像 
void setPixmap(const QPixmap &pixmap); // 设置显示的图像

         实例:QPixmap加载png图片,然后通过setPixmap方法显示图片。scaledContents默认值为false,当启用并且标签显示像素图时,它将缩放像素图以填充可用空间。

QLabel *label = new QLabel(this);
QPixmap picture1 ;
picture1.load("D:/creator-gs-01.png");
label = new QLabel(this);
label->setPixmap( picture1);
label->setScaledContents(true);//自适应大小
label->resize(200, 200);

 

10、scaledContents

        该属性用于确定标签是否缩放其内容以填充所有可用空间。

bool hasScaledContenes() const;      // 判断是否允许图像缩放 
void setScaledContents(bool on);     // 设置是否允许图像缩放 
bool hasScaledContenes() const;      // 判断是否允许图像缩放
void setScaledContents(bool on);     // 设置是否允许图像缩放

11、wordWrap

        该属性代表显示的文本是否允许换行。

bool wordWrap() const;         // 判断是否允许换行 
void setWordWrap(bool on);     // 设置是否允许换行 

12、movie

       该属性表示当前显示的gif信息。

QMovie *movie() const;       //获取当前的gif信息
void setMovie(QMovie *movie);//显示一个通过QMovie加载的gif文件

        实例:使用QMovie加载需要播放的gif文件,设置播放速度,200代表200%,也就是2X的速度。

QLabel *label = new QLabel(this);
ui->label->resize(320,200);
QMovie *movie = new QMovie("D:/earth.gif");
movie->setSpeed(200);//设置速度
movie->start();
ui->label->setMovie(movie);

 

13、textFormat

        该属性表示当前的文本格式。

Qt::TextFormat textFormat() const
void setTextFormat(Qt::TextFormat)
定义描述
Qt::PlainText纯字符串
Qt::RichText富文本 Supported HTML Subset
Qt::AutoText自动识别纯字符串还是富文本

14、公共函数

1)buddy

        设置小部件为“伙伴”。

QWidget *buddy() const
void setBuddy(QWidget *buddy)

       实例:当用户按下Alt+N时,焦点跳转到Name字段,当用户按下Alt+P时,焦点跳转到Phone字段。

ui->label->setText("&Name:");
ui->label_2->setText("&Phone:");
ui->label->setBuddy(ui->lineEdit);
ui->label_2->setBuddy(ui->lineEdit_2);

2)setNum

        使用setNum,参数直接传入int或者double,直接会被转字符串输出。

void setNum(double num)
void setNum(int num)
3)clear

        清除当前标签内容。

void clear()

15、信号

1)linkActivated

        当用户单击链接时发出此信号

void linkActivated(const QString &link)
2)linkHovered 

        当用户鼠标停留在链接上时发出此信号

void linkHovered(const QString &link)

实例:QLabel 显示使用HTML 4标记子集指定的富文本,

ui->label->setOpenExternalLinks(true);
ui->label->setText("<a style='color: green; text-decoration: none' href = https://blog.csdn.net/u014491932/article/details/131740931?spm=1001.2014.3001.5501>CSDN");
ui->label->setAlignment(Qt::AlignCenter);


ui->label_2->setText("<a style='color: green; text-decoration: none' href = https://blog.csdn.net/u014491932/article/details/131740931?spm=1001.2014.3001.5501>CSDN");
ui->label_2->setAlignment(Qt::AlignCenter);
connect(ui->label_2, &QLabel::linkActivated, [=](QString url){
        QDesktopServices::openUrl(QUrl(url));
    });

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
抱歉,我不完全理解你的问题。不过,如果你想用Python编写深度学习程序,并将其集成到QT应用程序中,则可以使用PyQt5库。以下是一个简单的示例代码,它使用PyTorch框架构建并训练了一个简单的神经网络模型,并将其集成到了一个简单的QT应用程序中: ```python import sys import torch from PyQt5.QtWidgets import QApplication, QDialog, QVBoxLayout, QPushButton, QLabel class MyDialog(QDialog): def __init__(self, model): super().__init__() self.model = model self.initUI() def initUI(self): self.setWindowTitle('Deep Learning Test App') self.layout = QVBoxLayout() self.btn = QPushButton('Test Model') self.btn.clicked.connect(self.test_model) self.layout.addWidget(self.btn) self.output_label = QLabel() self.layout.addWidget(self.output_label) self.setLayout(self.layout) def test_model(self): input = torch.randn(1, 10) output = self.model(input).item() self.output_label.setText('Model Output: {:.4f}'.format(output)) if __name__ == '__main__': # Build and train a simple neural network model model = torch.nn.Sequential( torch.nn.Linear(10, 5), torch.nn.ReLU(), torch.nn.Linear(5, 1) ) optimizer = torch.optim.SGD(model.parameters(), lr=0.1) loss_fn = torch.nn.MSELoss() for i in range(100): input = torch.randn(1, 10) target = torch.randn(1, 1) output = model(input) loss = loss_fn(output, target) optimizer.zero_grad() loss.backward() optimizer.step() # Create and show the QT dialog app = QApplication(sys.argv) dialog = MyDialog(model) dialog.show() sys.exit(app.exec_()) ``` 在这个示例中,我们定义了一个名为MyDialog的QT对话框,它包含一个“Test Model”按钮和一个标签。我们在构造函数中传递了一个已经训练好的神经网络模型,并在按钮单击事件处理程序中测试了该模型。当我们运行这个应用程序时,我们将看到一个简单的QT对话框,其中包含一个“Test Model”按钮和一个标签,我们可以单击按钮来测试我们的神经网络模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

波塞冬~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值