';神奇的';QTextEdit大小

';神奇的';QTextEdit大小,qt,Qt,以下是等效的提取代码: #include <QApplication> #include <QWidget> #include <QVBoxLayout> #include <QTextBrowser> #include <QTextEdit> class ChatMessageEdit : public QTextEdit { public: ChatMessageEdit(QWidget* parent) : QTextE

以下是等效的提取代码:

#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();
}
#包括
#包括
#包括
#包括
#包括
类ChatMessageEdit:publicQTextedit{
公众:
ChatMessageEdit(QWidget*parent):QTextEdit(parent){}
虚拟QSize sizeHint()常量{返回QSize(0,25);}
};
int main(int argc,字符**argv){
QApplication应用程序(argc、argv);
QWidget*widget=新的QWidget;
QVBoxLayout*布局=新的QVBoxLayout;
QTextBrowser*log=新的QTextBrowser(小部件);
布局->添加小部件(日志,1);
ChatMessageEdit*编辑器=新建ChatMessageEdit(小部件);
编辑器->设置最小高度(编辑器->大小提示().height());//空
布局->添加小部件(编辑器);
小部件->设置布局(布局);
widget->show();
返回app.exec();
}

编辑器的最小大小是25px,它的最小大小也是25px。但由于某种奇怪的原因,它是用大约100px的尺寸创建的,这总是比我的尺寸更受欢迎。其他一切都按预期工作:扩展(大小提示在我的应用程序中并没有真正固定)、收缩等。我尝试更改大小策略,但几乎没有结果。

这就是
minumSizeHint()
方法。我重载它以返回
sizeHint()
,现在一切都按预期工作。

您也忽略了布局的工作方式。请仔细阅读为什么您的尺寸在版面中不受尊重