我創建了左邊的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