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();