2014-06-19 18 views
1

首先,看看下面的圖片如何訪問位於mdi subWindow中的TextEdit的文本屬性?

總之,如何獲得TextEditcontent(text)
注意:我已經通過代碼動態地創建了MDI subWindow(QWidget)TextEdit,而不是通過Qt設計。

以下是寫給創建代碼MDI subWindowTextEdit

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屬性文本編輯獲取內容?

回答

0

獲取活動子窗口可通過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) 
{ 
    ... 
} 
+0

謝謝,但我想訪問其父'subwindow'是活動窗口的'TextEdit'。 –

+0

@LionKing通過'QMdiSubWindow * QMdiArea :: activeSubWindow()const'獲取活動子窗口。我更新了答案。 – Nejat

+0

謝謝'@ Nejat'先生,請你告訴我'widget()'函數的用途是什麼? –

1

QTextEdit::plainText()應該讓你那裏。顯然,你需要保持一個指向你動態創建的QTextEdit的指針。

+0

謝謝您的回答。 –

0

如果任何人有同樣的問題WRT的PyQt/PySide(像我一樣):所以,你可以通過訪問控件的所有子訪問活動子窗口的當前控件,使用以下命令:

txtWidget=myQMdiArea.activeSubWindow().widget()