setCentralWidget未在范围中声明

时间:2012-10-01 18:37:42

标签: qt qt4

#include <QtGui>
#include <QWidget>
#include "notepad.h"

notepad::notepad()
{
    textField = new QTextEdit;
    setCentralWidget(textField);
    setWindowTitle(tr("The building of a notepad...."));
}

这是我的一个Qt项目的文件。 setCentralWidget部分有一些错误。错误是它未在范围中声明。但是我已经包含了它包含在内的QWidget类。这是什么错误?

2 个答案:

答案 0 :(得分:3)

setCentralWidgetQMainWindow上的一种方法。它不是顶级功能。如果您的notepad类来自QMainWindow,那么它只会在此范围内,我认为它不能。{/ p>

答案 1 :(得分:0)

正如其他人所说,setCentralWidget(..)只是QMainWindow的成员。我认为您可以通过向QWidget添加布局然后将QTextEdit添加到布局来实现您要寻找的行为。我会建议QPlainTextEdit,因为它是为编辑文本文档的多行而设置的。 QTextEdit通常用于单行输入。这是一些示例代码:

notepad::notepad()
{
    QVBoxLayout *layout = new QVBoxLayout();
    QPlainTextEdit *textBox = new QPlainTextEdit();
    layout->addWidget(textBox);
    this->setLayout(layout);
    setWindowTitle(tr("The building of a notepad...."));
}

布局可以是QVBoxLayoutQHBoxLayoutQGridLayout等。这完全取决于您希望通过表单布局实现的目标。您还可以使用this->addWidget(QWidget*)而不是使用新创建的布局添加到现有布局。我希望这会有所帮助。