Qt:QDockWidget中QLabel的大小

时间:2015-07-10 14:10:22

标签: c++ qt qlabel qdockwidget

我创建了一个左QDockWidget,并在其中添加了2 QLabel。 我希望标签的大小平方(默认为100x100)。

因此,当用户增加QDockWidget的宽度时,我应该如何强制我的标签保持平方尺寸?

我尝试了很多东西,没有任何成功:(

2 个答案:

答案 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);

现在,我需要在标签中调整我的像素图。 我会在结束这个问题之前发布它。