2015-10-21 46 views
1

我最近開始使用Qt和Qwt。我自己找不到我的錯誤。請幫幫我。有代碼。 我知道我在這裏的某個地方出錯:Qt - setLayout()和setCentralWidget()

.h文件中

... 

    class MainWindow : public 
    QMainWindow 
    { 
     Q_OBJECT 
     QWidget *centralWidget; 
    public: 
     MainWindow(QWidget *parent = 0); 
    ... 
    } 

的.cpp

MainWindow::MainWindow(QWidget *parent): 
    QMainWindow(parent) { 
    ... 
    ... 
    void MainWindow::setPlotButton() { 
     button = new QPushButton("push"), 
     button->setCheckable(true); 
     connect(button, SIGNAL(toggled(bool)), this, SLOT(toggled(bool))) 
     QHBoxLayout *plotsLayout = new QHBoxLayout; 
     plotsLayout->setSpacing(10); 
     plotsLayout->addWidget(funPlot); 
     QHBoxLayout *buttonsLayout = new QHBoxLayout ; 
     buttonsLayout->addWidget(button); 
     QVBoxLayout *widgetLayout = new QVBoxLayout; 
     widgetLayout->addLayout(plotsLayout); 
     widgetLayout->addLayout(buttonsLayout); 
     setLayout(widgetLayout); 
    ... 
    } 

我收到一條消息「的QWidget :: setLayout的:嘗試QLayout 「」 上MainWindow「」,它已經有一個佈局「。我發現我必須使用函數setCentralWidget(),但是我應該改變什麼?

回答

5

而不是隻調用setLayout(widgetLayout);這將調用主窗口的方法,嘗試調用:

centralWidget()->setLayout(widgetLayout); 

的主窗口本身已經擁有與centralwidget,一個QMenuBarQStatusBarQAction -Bar佈局。

您希望您的新小部件駐留在中央小部件中,通常也稱爲「內容小部件」。

+0

非常感謝! – Kate