通过qss设置qlabel的字体大小,为什么获取到qlabel的字符串宽度一样

通过qss设置qlabel的字体大小,为什么获取到qlabel的字符串宽度一样,第1张

1. QLabel::fontMetrics().width(QString s): 获取字符串s的总像素宽度。

int QFontMetrics::width ( const QString &text, int len = -1 ) const

Returns the width in pixels of the first len characters of text. If len is negative (the default), the entire string is used.

Note that this value is not equal to boundingRect().width()boundingRect() returns a rectangle describing the pixels this string will cover whereas width() returns the distance to where the next string should be drawn.

See also boundingRect().

2. QLabel::fontMetrics().height(): 获取字体的高度。

int QFontMetrics::height () const

Returns the height of the font.

This is always equal to ascent()+descent()+1 (the 1 is for the base line).

See also leading() and lineSpacing().

3. QLabel::fontMetrics().lineSpacing(): 获取字体的高度,包括文字的实际宽度和行距。

4. QLabel::fontMetrics().leading(): 行间距

int QFontMetrics::leading () const

Returns the leading of the font.

This is the natural inter-line spacing.

See also height() and lineSpacing().

其他函数参见QT 的 QFontMetrics Class Reference

int QFontMetrics::lineSpacing () const

Returns the distance from one base line to the next.

This value is always equal to leading()+height().

See also height() and leading().

windows

第8篇 基础(八)设置Qt状态栏

林中静月下仙

原创Java领域优质创作者

关注

0点赞·320人阅读

导语

在程序主窗口QMainWindow中,主要包含菜单栏,工具栏,中心部件和状态栏。前面几个已经讲过了,这一篇讲解状态栏的使用。

环境是:Windows 7 + Qt 4.8.1 +Qt Creator 2.4.1

目录

一、添加动作状态提示

二、显示其他临时信息

三、显示永久信息

正文

一、添加动作状态提示

1.首先还是打开上一篇完成的程序。对于菜单动作添加状态提示,可以很容易的在设计器中来完成。

2.下面进入设计模式,在Action编辑器中选中新建动作,然后在右面的属性编辑器中将其statusTip更改为“新建文件”。如下图所示。

3.这时运行程序,当光标移动到新建动作上时,在下面的状态栏将会出现设置的提示。如下图所示。

我们可以按照这种方式来设置其他动作的状态栏提示信息。

二、显示其他临时信息

状态信息可以被分为三类:临时信息,如一般的提示信息,上面讲到的动作提示就是临时信息;正常信息,如显示页数和行号;永久信息,如显示版本号或者日期。可以使用showMessage()函数来显示一个临时消息,它会出现在状态栏的最左边。一般用addWidget()函数添加一个QLabel到状态栏上用于显示正常信息,它会生成到状态栏的最左边,可能会被临时消息所掩盖。

1.我们到mainwindow.cpp文件的构造函数最后面添加如下一行代码:

ui->statusBar->showMessage(tr("欢迎访问Qt爱好者社区!"))

登录后复制

这样就可以在运行程序时显示指定的状态提示了。效果如下图所示。

这个提示还可以设置显示的时间。如:

ui->statusBar->showMessage(tr("欢迎访问Qt爱好者社区!"), 2000)

登录后复制

这样提示显示2000毫秒即2秒后会自动消失。

2.下面我们在状态栏添加一个标签部件用来显示一般的提示信息。因为无法在设计模式向状态栏添加部件,所以只能使用代码来实现。先在mainwindow.h文件中添加类的前置声明:

class QLabel

登录后复制

然后添加一个私有对象定义:

QLabel *statusLabel

登录后复制

下面到mainwindow.cpp文件中,先添加头文件声明:

#include <QLabel>

登录后复制

然后到构造函数中将前面添加的:

ui->statusBar->showMessage(tr("欢迎访问Qt爱好者社区!"), 2000)

登录后复制

一行代码注释掉,再添加如下代码:

statusLabel = new QLabel

statusLabel->setMinimumSize(150, 20)// 设置标签最小大小

statusLabel->setFrameShape(QFrame::WinPanel)// 设置标签形状

statusLabel->setFrameShadow(QFrame::Sunken)// 设置标签阴影

ui->statusBar->addWidget(statusLabel)

statusLabel->setText(tr("欢迎访问Qt爱好者社区!"))

登录后复制

这时运行程序,效果如下图所示。

下面就可以在需要显示状态的时候,调用statusLabel来设置文本了。

三、显示永久信息

如果要显示永久信息,要使用addPermanentWidget()函数来添加一个如QLabel一样的可以显示信息的部件,它会生成在状态栏的最右端,不会被临时消息所掩盖。

我们在构造函数中添加如下代码:

QLabel *permanent = new QLabel(this)

permanent->setFrameStyle(QFrame::Box | QFrame::Sunken)

permanent->setText(

tr("<a href=\"http://www.yafeilinux.com\">yafeilinux.com</a>"))

permanent->setTextFormat(Qt::RichText)

permanent->setOpenExternalLinks(true)

ui->statusBar->addPermanentWidget(permanent)

登录后复制

这样就在状态栏的右侧添加了一个网站的超链接,点击该链接就会自动在浏览器中打开网站。运行程序,效果如下图所示。

结语

到这里整个文本编辑器的程序就算写完了。我们这里没有写帮助菜单的功能实现,大家可以自己添加。而且程序中也有很多漏洞和不完善的地方,如果有兴趣,大家也可以自己修改。因为时间和篇幅的原因,我们这里就不再过多的讲述。如果想学习一下多文档编辑器的实现,可以参考《Qt及Qt Quick开发实战精解》一书的多文档编辑器的实例。

horizontalHeader() ->setStretchLastSection(true),就是最后一列自动适应宽度,简单理解就是和table的右边连在一起。

然后有点没搞懂你说的,你是说不要出现滚动条?那你需要调整一下每一列的宽度


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7859060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存