1.使用QTabWidget實現嵌入式子窗口:
1.1.添加子窗口(新頁面):
int QTabWidget::addTab(QWidget * page, const QString & label):用給定的組件創建新的一頁返回添加的新頁面的索引;
int insertTab(int index, QWidget *page, const QString &label):差不多
1.2.獲取頁面:
QWidget *widget(int index) const:返回指定索引的頁面(注意是頁面而不是子窗口,這是個坑,其實沒用,下面細說)
1.3.刪除頁面:
void removeTab(int index):刪除指定索引的頁面
1.4.還有一大堆屬性方法就不多說了:int count() const,int currentIndex() const
1.5.坑與技巧
問題情境:假如我有個QPlainTextEdit類的(子窗口)控件,我已知頁面的索引要獲取這個控件中的值(也就是文本),
坑:那麼你使用QWidget *widget(int index)方法得到的QWidget對象是頁面,而不是子控件,就沒有toPlainString()方法,所以你竟然不能獲取子窗口對象?
解決方法:所以把子窗口聲明爲成員變量而不是局部變量:
//比如,聲明變量如下:
QPlainTextEdit* te[10];//因爲有多個子頁面,所以是二維指針,這個10是隨便寫的,是最大頁數;
//創建新頁面以及子窗口如下:
int count=ui->tabWidget->count();
te[count]=new QPlainTextEdit(ui->tabWidget);
ui->tabWidget->addTab(te[count],"新的一頁");
//這麼使用子窗口:
te[index]->toPlainText();