Как я могу получить доступ к свойству text для TextEdit, которое находится в mdi subWindow?

Во-первых, посмотрите на следующее изображение

Короче, как получить content(text) из TextEdit,
Обратите внимание: я создал MDI subWindow(QWidget) а также TextEdit динамически кодом, а не дизайном Qt.

Ниже приведен код, который написал для создания MDI subWindow а также TextEdit:

QWidget *widget = new QWidget(this);
QTextEdit *TextEdit = new QTextEdit(widget);
QMdiSubWindow *mdiWindows = ui->mdiArea->addSubWindow(widget);
mdiWindows->setGeometry(5, 5, 300, 250);
mdiWindows->setWindowTitle(finfo.baseName());
mdiWindows->setWindowState(Qt::WindowMaximized);
mdiWindows->layout()->addWidget(TextEdit);
mdiWindows->show();

А теперь, как я могу получить доступ к свойству text для TextEdit, чтобы получить контент?

3 ответа

Решение

Получение активного подокна доступно QMdiSubWindow * QMdiArea::activeSubWindow () const, Вы также можете использовать findChild чтобы получить ребенка с конкретным именем:

QTextEdit * textEdit = ui->mdiArea->activeSubWindow()->widget()->findChild<QTextEdit*>("myTextEdit");

Но вы также должны установить имя для вашего дочернего виджета при его создании:

QTextEdit *textEdit = new QTextEdit(widget);
textEdit->setObjectName("myTextEdit");

Также QList<T> QObject::findChildren ( const QString & name = QString() ) const возвращает все дочерние элементы с заданным именем, которое может быть приведено к типу T. Пропуск имени приводит к сопоставлению всех имен объектов. Таким образом, вы можете получить доступ ко всем дочерним элементам виджета:

QList<QTextEdit *> list = ui->mdiArea->activeSubWindow()->widget()->findChildren<QTextEdit *>();
foreach(QTextEdit *w, list)
{
    ...
}

QTextEdit::plainText() должна получить вас там. Очевидно, вам нужно сохранить указатель на QTextEdit что вы динамически создали вокруг.

В случае, если у кого-то есть тот же вопрос по PyQt/PySide (как у меня): чтобы получить доступ к текущему виджету в активном подокне, используйте следующее:

txtWidget=myQMdiArea.activeSubWindow().widget()

Другие вопросы по тегам