我创建了一个左QDockWidget
,并在其中添加了2 QLabel
。
我希望标签的大小平方(默认为100x100)。
因此,当用户增加QDockWidget
的宽度时,我应该如何强制我的标签保持平方尺寸?
我尝试了很多东西,没有任何成功:(
答案 0 :(得分:0)
我认为你将覆盖int QWidget::heightForWidth( int aWidth ) const函数。因此,您需要创建自己的QLabel
子类。
class MyLabel
{
public:
virtual int heightForWidth( int aWidth ) const override
{
return aWidth; // So it will be square.
}
};
答案 1 :(得分:0)
我想我有解决方案。
我创建了这个子类:
class SquareLabel : public QLabel
{
public:
SquareLabel(QWidget* parent = 0) : QLabel(parent)
{
setMinimumSize(100, 100);
QSizePolicy pol(QSizePolicy::Preferred, QSizePolicy::Preferred);
pol.setHeightForWidth(true);
setSizePolicy(pol);
}
virtual int heightForWidth(int w) const { return w; }
virtual QSize sizeHint() const { int w = this->width(); return QSize(w, heightForWidth(w)); }
protected:
void resizeEvent(QResizeEvent* event) { }
};
我的所有标签都添加到QVBoxLayout中,我需要这个属性:
layout->setAlignment(Qt::AlignTop);
现在,我需要在标签中调整我的像素图。 我会在结束这个问题之前发布它。