我正在尝试计算两个数字(喜欢和不喜欢)之间的比例。
结果是一个百分数。然后,我想使标签的宽度等于这个百分比。
因此,如果有100个喜欢和1个不喜欢,我希望使不喜欢的标签宽度等于喜欢条的1%。基本上像YouTube评级系统一样。
示例图像:
但我没有看到设置标签宽度的函数。 那么我该怎么做呢?有什么建议吗?
QLabel::setFixedWidth(int)
。但为了使其更灵活(不需要担心布局会改变),我会子类化QWidget
,为这两个数字添加插槽,并重新实现paintEvent(..)
以绘制这两个部分。
ui->qlabel->setGeometry(x, y, width, height);
嗯,我只是使用resize()方法。
例如,我的小部件是从QLabel实现的:
BenchItem *itm=static_cast<BenchItem*>(widget);
itm->resize(this->width(),itm->height());
我不需要改变高度,所以它使用自身的高度,但是由于父元素的宽度,宽度应该改变。
查看QT文档,该元素只能包含
"纯文本、富文本、像素图、电影、数字或无"
其中最有前途的是"像素图",但似乎没有您需要的图像处理功能,而更多地是关于显示图像:
http://qt-project.org/doc/qt-4.8/qpixmap.html
相反地,我建议您寻找更轻量级的解决方案来解决您的条形图问题,例如CSS。以下是使用两个div元素实现此目的的方法:
http://www.1080degrees.net/archive/journal/simple_css_bar_graph/
如果您希望最终显示图像,并且启用了GD库,请看这里:
paintEvent()
的自定义QWidget是解决问题的最佳方法。 - Stefan Majewsky