2014-02-21 53 views
0

我有下面的代碼片段:QTableWidget的在VBoxLayout不調整

PDFViewer::PDFViewer(const QString &title, MainWindow *mainWindow, Qt::WindowFlags flags) : 
    QDockWidget(title, mainWindow, flags), 

    mainWindow_(mainWindow) 
{ 
    setObjectName("PDFViewer"); 

    setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); 

    layoutWidget_ = new QWidget(this); 
    verticalLayout_ = new QVBoxLayout(layoutWidget_); 

    variable_ = new QLabel(layoutWidget_); 
    time_ = new QLabel(layoutWidget_); 
    PDFTable_ = new PDFTable(mainWindow_, layoutWidget_); 
    PDFPlot_ = new QWidget(layoutWidget_); 

    verticalLayout_->addWidget(variable_, 0, Qt::AlignLeft | Qt::AlignTop); 
    verticalLayout_->addWidget(time_, 0, Qt::AlignLeft | Qt::AlignTop); 
    verticalLayout_->addWidget(PDFTable_, 1, Qt::AlignLeft | Qt::AlignTop); 
    verticalLayout_->addWidget(PDFPlot_, 1, Qt::AlignLeft | Qt::AlignTop); 

    PDFTable_->horizontalHeader()->hide(); 
    PDFTable_->verticalHeader()->hide(); 
    PDFTable_->setAlternatingRowColors(true); 
    PDFTable_->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); 

    layoutWidget_->setLayout(verticalLayout_); 

    setWidget(layoutWidget_); 
} 

結果是這樣的:

enter image description here

我的問題是,當我改變停靠窗口的大小,我表格寬度保持不變。任何想法如何保持表格寬度的碼頭/佈局的大小?

回答

0
  1. 設置在表上的Minimum大小策略可能會阻止它擴展。如果您想要擴展,請將兩種尺寸策略都設置爲MinimumExpanding

  2. 當您創建一個具有widget作爲父級的佈局時,該佈局將設置爲widget。沒有必要撥打widget->setLayout

  3. 將小部件添加到佈局時,只要在小部件上設置了佈局,就立即重新設置小部件,或者如果小部件已經設置了佈局,則立即重新設置它們。因此,你不必父控件傳遞給variable_time_

剩下的問題肯定會出現在PDFTable_實施 - 我們需要看到,知道爲什麼行爲不端。爲了證實其連同QWidget更換PDFTable_ - 如果代碼的行爲

你的代碼可以簡化爲以下,與QWidget插入測試目的:

setObjectName("PDFViewer"); 

setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); 

layoutWidget_ = new QWidget(this); 
verticalLayout_ = new QVBoxLayout(layoutWidget_); 

variable_ = new QLabel(); 
time_ = new QLabel(); 
PDFTable_ = new QWidget(); //(mainWindow_); 
PDFPlot_ = new QWidget(); 

verticalLayout_->addWidget(variable_, 0, Qt::AlignLeft | Qt::AlignTop); 
verticalLayout_->addWidget(time_, 0, Qt::AlignLeft | Qt::AlignTop); 
verticalLayout_->addWidget(PDFTable_, 1, Qt::AlignLeft | Qt::AlignTop); 
verticalLayout_->addWidget(PDFPlot_, 1, Qt::AlignLeft | Qt::AlignTop); 

#if 0 
PDFTable_->horizontalHeader()->hide(); 
PDFTable_->verticalHeader()->hide(); 
PDFTable_->setAlternatingRowColors(true); 
#endif 
PDFTable_->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding); 
PDFTable_->setStyleSheet("background: yellow"); // to see it 

setWidget(layoutWidget_); 
+0

沒有你的變化,得益於(瞭解了類的我'm using),但是當我調整dock的大小時,table仍然沒有調整大小... – major4x

+0

@ major4x當你使用替代'QWidget'而不是實際表時,它是否仍然有這種行爲? –