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

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

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

4

2 回答 2

3

setCentralWidget是一种方法QMainWindow。它不是顶级功能。notepad如果您的类派生自,它只会在此处的范围内QMainWindow,我猜它一定不是。

于 2012-10-01T18:44:12.123 回答
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*)而不是使用新创建的布局来添加到现有布局。我希望这有帮助。

于 2012-10-31T01:55:46.573 回答