Как я могу получить доступ к свойству 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()