以下是等效的提取代码:
#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,总是首选到我的大小提示。其他一切都按预期工作:扩展(大小提示在我的应用程序中没有真正修复),缩小等等。我尝试改变大小政策,但绝对没有结果。
答案 0 :(得分:3)
这是minumumSizeHint()
方法。我重载了它以返回sizeHint()
,现在一切正常。
答案 1 :(得分:0)
您还可以忽略布局的工作原理。请阅读here,了解您的尺寸在布局中未得到遵守的原因。