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

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

これは私の Qt プロジェクトの 1 つのファイルです。setCentralWidget 部分にエラーがあります。エラーは、スコープで宣言されていないことです。しかし、それが含まれる QWidget クラスを含めました。間違いは何ですか?

4

2 に答える 2

3

setCentralWidget上の方法QMainWindowです。これはトップレベルの関数ではありません。notepadクラスが から派生している場合にのみ、ここでスコープ内になりますが、そうすべきではQMainWindowないと思います。

于 2012-10-01T18:44:12.123 に答える
0

他の人が言ったように、 QMainWindowsetCentralWidget(..)のメンバーのみです。QWidgetにレイアウトを追加し、QTextEditをレイアウトに追加することで、探している動作を実現できると思います。テキストドキュメントの複数行を編集するための設定であるため、 QPlainTextEditをお勧めします。QTextEditは通常、1 行の入力に使用されます。サンプルコードは次のとおりです。

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 に答える