2010-01-30 128 views
4

下面是一个等价抽出代码:“神奇”的QTextEdit大小

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

用于编辑的最小大小为25像素,所以是它的最小尺寸。但由于一些奇怪的原因,它创建的大小约为100px,即总是首选以达到我的尺寸提示。其他的一切都按预期工作:扩展(尺寸提示并没有真正固定在我的应用程序中),缩小等。我尝试了改变尺寸策略,但是没有结果。

回答

3

这是minumumSizeHint()方法。我超载它返回sizeHint(),并且现在一切都按预期工作。

0

您也忽略了布局是如何工作的。请阅读here,了解为什么您的尺寸在布局中不受尊重。