Qt进阶--(嵌入式子窗口)QTabWidget,......

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

还有用其他控件实现子窗口的方法,有时间再更,最近考试

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章