tags:

views:

227

answers:

2

Here is an equivalent extracted code:

#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QTextBrowser>
#include <QTextEdit>

class ChatMessageEdit : public QTextEdit {
public:
    ChatMessageEdit(QWidget* parent) : QTextEdit(parent) { }
    virtual QSize sizeHint() const { return QSize(0, 25); }
};

int main(int argc, char** argv) {
    QApplication app(argc, argv);

    QWidget* widget = new QWidget;

    QVBoxLayout* layout = new QVBoxLayout;

    QTextBrowser* log = new QTextBrowser(widget);
    layout->addWidget(log, 1);

    ChatMessageEdit* editor = new ChatMessageEdit(widget);
    editor->setMinimumHeight(editor->sizeHint().height()); // empty
    layout->addWidget(editor);

    widget->setLayout(layout);
    widget->show();

    return app.exec();
}

The minimum size for editor is 25px, and so is it's minimal size. But by some strange reason it is created with a size about 100px that is always preferred to my size hint. Everything other is working as expected: expanding (size hint isn't really fixed in my application), shrinking etc. I tried changing size policy, but with abolutely no result.

A: 

This was the minumumSizeHint() method. I overloaded it to return sizeHint(), and everything is working as expected now.

whitequark
A: 

You are also overlooking how layouts work. Please read up here on why your sizes are not being respected in a layout.

Adam W