我创建了左边的QDockWidget
,并在其中添加了2 QLabel
。 我想要标签的平方尺寸(默认为100x100)。Qt:QDockWidget中QLabel的大小
因此,当用户增加QDockWidget
的宽度时,我应该如何强制我的标签保持平方尺寸?
我尝试了很多事情,没有任何成功:(
我创建了左边的QDockWidget
,并在其中添加了2 QLabel
。 我想要标签的平方尺寸(默认为100x100)。Qt:QDockWidget中QLabel的大小
因此,当用户增加QDockWidget
的宽度时,我应该如何强制我的标签保持平方尺寸?
我尝试了很多事情,没有任何成功:(
我认为你应该重写int QWidget::heightForWidth(int aWidth) const功能。所以,你需要创建自己的QLabel
子类。
class MyLabel
{
public:
virtual int heightForWidth(int aWidth) const override
{
return aWidth; // So it will be square.
}
};
我想我有。该解决方案
我创建这个子类:
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);
现在,我需要调整我的像素图在我的标签。 我会在关闭此问题之前发布它。
http://stackoverflow.com/a/22618496/999943 – phyatt
这是不够的。 – hao