'神奇'QTextEdit大小

时间:2010-01-30 01:05:45

标签: qt

以下是等效的提取代码:

#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();
}

编辑器的最小尺寸为25px,因此它的最小尺寸也是如此。但是由于一些奇怪的原因,它创建的大小约为100px,总是首选到我的大小提示。其他一切都按预期工作:扩展(大小提示在我的应用程序中没有真正修复),缩小等等。我尝试改变大小政策,但绝对没有结果。

2 个答案:

答案 0 :(得分:3)

这是minumumSizeHint()方法。我重载了它以返回sizeHint(),现在一切正常。

答案 1 :(得分:0)

您还可以忽略布局的工作原理。请阅读here,了解您的尺寸在布局中未得到遵守的原因。