我最近开始与Qt和Qwt合作。我自己找不到自己的错误。请帮我。有代码。 我知道我在这里的错误:
.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(),但究竟应该更改什么?
答案 0 :(得分:7)
不要只调用调用MainWindow方法的setLayout(widgetLayout);
,而是尝试调用:
centralWidget()->setLayout(widgetLayout);
主窗口本身已拥有包含centralwidget
,QMenuBar
,QStatusBar
和QAction
- 栏的布局。
您希望新的小部件驻留在中央窗口小部件中,通常也称为“内容窗口小部件”。
答案 1 :(得分:0)
您实例化了QWidget,这是朝着正确方向迈出的一步,但是您需要使用setcentralWidget()函数将QWidget对象(您命名为centralWidget)设置为中央小部件