Qt 中如何改变Label大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 中如何改变Label大小相关的知识,希望对你有一定的参考价值。

一、在qt“文件”菜单下,选择“新建项目”或“文件”,在弹出菜单窗口中选择“文件和类”,然后单击右侧的“qt设计器接口类”。

二、之后弹出窗口模板选择界面。在这里,我们选择qfram模板。读者可以自己选择其他模板,然后单击“下一步”。

三、之后,将弹出窗口名称设置,为窗口和窗口类指定一个合理的名称,然后单击“下一步”。

四、在这个界面中,我们将设计三行标签行。在每行标签下,我们将设置一个输入框和一个按钮。如图所示,将所有需要的控件从控制条拖到接口,并用相应的垂直或水平空白控件填充空白。

五、因为我们的界面是由线条设计的,所以我们需要对相关控件进行水平布局,使其看起来更漂亮。水平布局方法如图所示。选择需要水平布局的控件(按住ctrl键可选择多个控件),然后单击设计界面上方的“水平布局”按钮。

六、按F5键运行窗体,将窗体还原为原始窗体,再次还原窗体的效果如图所示。可以看到,随着窗体大小的更改,每个控件也在进行相应的自适应更改。

参考技术A

1、在Qt“文件”菜单下选择新建项目或文件,在弹出的菜单窗口中选择“文件和类",并在右侧点击”Qt设计师界面类"。

2、之后会弹出窗体模板选择界面,在这里我们选择的是QFram模板,读者可以自行选择其他模板,单击“下一步”。

3、之后会弹出窗体各名称设置,给窗体以及窗体类取一个合理的名字,点击“下一步”。

4、在本界面,我们准备设计三行标签行,每行标签下设置一个输入框和一个按钮,如图所示,从控件栏将所有需要的控件全部拖到界面上,空白部分用相应的垂直或水平空白控件填充。

5、由于我们的界面是按行进行设计,因此,我们需要将相关控件进行水平布局以显得美观,水平布局方法如图所示,选择需要水平布局的控件(按住ctrl键可选多个控件),单击设计界面上方的水平布局按钮。

6、按F5运行窗体,原始窗体,缩小窗体,再次缩小窗体效果如图所示,可以看到,随着窗体尺寸的变化,各控件也在进行相应的自适应变化。

参考技术B

法一(固定宽高度):在源文件里写  ui->label->setFixedSize(int w,int h); w是label的宽度,h高度。eg: ui->label->setFixedSize(100,40);设置标签长为100,高为40。

法二:在设计师里:点击label ,将光标放在label的右下角,向右/下拖拽放大,自己觉得合适就行。或者点击label后在设计师右侧属性的如果布局有拉伸效果,标签会随布局拉伸放大或拉长。无布局效果就是固定自己调整好的大小。或者在右边输入宽和高的值,如下图所示。

参考技术C Label->resize ( int w, int h )
其实你应该看文档,在文档里查找QLabel类,然后查找QLabel类的成员函数,就可以找到resize ( int w, int h )。
参考技术D   layout->setSizeConstraint(QLayout::SetFixedSize);
  layout是最外层的layout;
  设置label字体样式,最直接的方法如下:
  QFont font("Courier",24);
  painter.setFont(font);
  Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器

调整 qt-label 中的图像大小

【中文标题】调整 qt-label 中的图像大小【英文标题】:Resize images inside qt-label 【发布时间】:2012-10-18 15:27:11 【问题描述】:

我有一个 qt 标签,默认情况下其中有一个占位符图像:

self.label.setPixmap(QtGui.QPixmap(_fromUtf8("place_holder.jpg")))

有一个功能可以更新标签中包含的图像:

def selectFile(self):
image = QtGui.QFileDialog.getOpenFileName(None, 'Select Reference Image', '', '*.jpg')
self.label.setPixmap(QtGui.QPixmap(_fromUtf8(image)))

这工作正常(图像已更新),但如果用于更新标签的图像与占位符图像的大小不同,它也会变形。

有没有办法解决这个问题?我的意思是调整图像并保持标签的大小不变?

【问题讨论】:

Is there any way to fix this? 您的问题含糊不清...您更喜欢哪种解决方法?将标签调整为新的图像大小?保持旧图像的纵横比等... 我的意思是调整图像并保持标签的大小 【参考方案1】:

你可以尝试设置scaledContents property:

self.label.setScaledContents(True)
self.label.setPixmap(QPixmap("your_image.jpeg"))

对我来说很好用。

请注意,这会缩放图像以填充所有可用空间。这意味着除非标签大小和图像具有相同的纵横比,否则不会保留图像的纵横比。使用QPixmap.scale 方法也会遇到同样的问题,正如您在图片here 中看到的那样。

【讨论】:

是的,但是图像没有失真吗? 我认为扭曲意味着不保留纵横比。我已经更新了我的答案,试图解释它发生的原因。【参考方案2】:

Scale the image 每次导入时。如果您已经为标签确定了尺寸,您甚至可以缩放占位符。 试试 (c++)

//initial setup
QPixmap pixPlaceHolder = QPixmap(_fromUtf8("place_holder.jpg");
QSize desiredsize = pixPlaceHolder.size(); // or any of the size you want

每次选择文件时:

 label.setPixmap(QPixmap(_fromUtf8(image).scaled(desiredsize));

【讨论】:

另外请看一下 QLabel 的 setScaledContents() 方法(doc.qt.digia.com/qt/qlabel.html#scaledContents-prop)。 我试过: self.label.setPixmap(QtGui.QPixmap(_fromUtf8(image))) 然后 self.label.pixmap().scaled(QtCore.QSize(self.label.size() ), QtCore.Qt.KeepAspectRatio, QtCore.Qt.FastTransformation) 但它不起作用

以上是关于Qt 中如何改变Label大小的主要内容,如果未能解决你的问题,请参考以下文章

如何改变label字体的大小

QT中控件如何随着窗口大小的改变而使它充满整个窗口空间

.net中如何动态改变Label控件的位置

在Qt里怎么将小图片显示在QLabel的中央位置?

QT中如何改变GroupBox控件内部的某一类控件?

qt界面上label控件值发生变化,怎么才能在界面上更新