2010-01-30 127 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,瞭解爲什麼您的尺寸在佈局中不受尊重。