QLABEL切断调整大小的文本
QLabel cutting off text on resize
我有一个自定义窗口小部件,该窗口部门具有qvboxlayout的整体布局。它包含多个标签,一个Qformlayout,一个按钮和一个延伸,可以吃掉所有多余的空间。其中一个标签可能很大,因此我试图确保在文本不可读的情况下没有奇怪的情况。小部件包含在QSCrollarea中,以确保如果用户缩小了整个窗口,仍然可以看到小部件的所有方面。
Qlabel似乎调整了尺寸符号,但是一旦达到某个狭窄点,它就会切断标签的底部几行,并将空间分配到小部件底部的伸展。
。我在没有设计师的情况下在代码中进行了所有操作,因此我很可能只是缺少一些东西。按以下顺序将子组件添加到总体QVBoxLayout中:
OverallLayout = new QVBoxLayout(this);
Title = new QLabel();
Description = new QLabel();
SubRegion = new QFormLayout();
Button = new QButton();
...
// set text values, wordWrap(true), and Font for labels
OverallLayout->addWidget(Title);
OverallLayout->addWidget(Description);
OverallLayout->addLayout(SubRegion);
OverallLayout->addStrut(MIN_DIST);
OverallLayout->addWidget(Button);
OverallLayout->addStretch(STRETCH_FACTOR);
测试结果:检查从Qlabel的sizeHint()函数返回的结果,返回的值似乎没有变化,因为小部件水平缩小。但是,Qlabel确实会扩展以占用更多的垂直房间(153 vs的提示为103),这不足以适合所有文本。首先显示Qlabel时,它的像素比尺寸较小,但仍足以达到其高度宽度。调整大小时,它比其高度低30个,但比大小的尺寸要大。
我已经检查了,并且大型Qlabel的hasheightforwidth()和WordWrap()值设置为true。我究竟做错了什么?
我最终采用了覆盖小部件的resizeEvent(QResizeEvent *evt)
函数的方法,以动态设置Qlabel的最大值。
void MyWidget::resizeEvent (QResizeEvent *evt) {
int newHeight = Description.heightForWidth(Description.width());
Description.setMaximumHeight(newHeight);
QWidget::resizeEvent(evt);
// Note: I'm not sure if this last step is necessary
}
要注意的一个有趣的项目是,如果您同时进行setMinimumHeight(newHeight)
和setMaximumHeight(newHeight)
,标签将垂直增长以适合文本,但是当标签水平增长并且不需要额外的空间时,标签将永远不会收缩。我的猜测是,heightForWidth(int w)
返回小部件的最小值和实际需要的像素之间的最大值。奇怪的部分是它似乎不在乎返回大于当前最大值的值。
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 调整大小后指向元素值的指针unordered_map有效?
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何使用c++调整文本文件中代码的缩进?
- 是否有提供可调整 dpi、可选文本和 CSS 支持的 HTML 到 PDF 渲染器?
- QLABEL切断调整大小的文本
- 如何在重新调整窗口大小时使文本显示在窗口中心,visualc++
- 根据文本动态调整控件大小
- 用文本调整QToolButton的大小
- 在win32 api c中使用窗口调整文本框大小