• 4808阅读
  • 7回复

通过TabWidget作为入口对其子部件进行操作       问题成功解决!!! [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-17
void HText::HTextAddText()   //将一个TextEdit添加到tabWidget的一个页面里
{
    QTextEdit *text=new QTextEdit;   //定义一个TextEdit
    text->setPlainText("123456");
    this->tabWidget->addTab(text,"new");  
}

如何以tabWidget作为入口,对放在了页面上的TextEdit进行操作?如把那个123456保存出来。而不是以指针text作为入口对TextEdit进行操作。。。
[ 此帖被iiiyyyhhhsss在2009-09-17 23:06重新编辑 ]
离线wsszlj

只看该作者 1楼 发表于: 2009-09-17
把text的定义放到初始化函数里
离线robertkun

只看该作者 2楼 发表于: 2009-09-17
引用楼主iiiyyyhhhsss于2009-09-17 17:58发表的 关于TabWidget :
如何以tabWidget作为入口


这个恐怕不可以吧。。
                                              简单的生活使人快乐!
离线iiiyyyhhhsss

只看该作者 3楼 发表于: 2009-09-17
我觉得应该是可以的。。。因为程序运行后,可以在textEdit里输入内容,也就是tabWidget里应该是有备份text指针的。因为如果没有备份,我在输入内容的时候,键盘输入的字符如何找到那块内存,存放起来,并且在屏幕上显示呢?

希望能成功,因为如果把text定义在外面,或者作为类的成员来定义,这样对于我要做的操作,会麻烦很多。。

例如,如果我有两个textEdit,一个是textEdit1,一个是textEdit2,分别添加到tabWidget的page1和page2里。

那么这里会有一个挂钩,page1对应textEdit1,page2对应textEdit2

由于标签Tab位置是可以互换的,当页面位置互换后,我就不知道currentTab对应的到底是textEdit1还是textEdit2了。。。

当页面很多的时候,就更难管理了。。。
[ 此帖被iiiyyyhhhsss在2009-09-17 19:50重新编辑 ]
离线dbzhang800

只看该作者 4楼 发表于: 2009-09-17
Qt中 QObject 的子类总可以从父对象得到子对象。

const QObjectList & QObject::children () const

Returns a list of child objects. The QObjectList class is defined in the <QObject> header file as the following:

typedef QList<QObject*> QObjectList;
The first child added is the first object in the list and the last child added is the last object in the list, i.e. new children are appended at the end.
离线iiiyyyhhhsss

只看该作者 5楼 发表于: 2009-09-17
呵,楼上的信息有点奏效
QList<QTextEdit*> text=this->tabWidget->findChildren<QTextEdit*>();   //找出tabWidget所有QTextEdit类的child
text.at(0)->append("123456");//对第一个child进行操作

暂时用上面两句,收到了初步效果。

不过好像顺序有点乱,text.at(0)并不是固定指向其中某个textEdit的,有时候指向这个,有时候指向那个。
离线iiiyyyhhhsss

只看该作者 6楼 发表于: 2009-09-17
void HText::HTextAddText()   //将一个TextEdit添加到tabWidget的一个页面里
{
    QTextEdit *text=new QTextEdit;   //定义一个TextEdit
    text->setObjectName("text");     //设置ObjectNmae
    text->setPlainText("123456");
    this->tabWidget->addTab(text,"new");  
}

只要在上面的函数定义text后,设置ObjectNmae,然后在查找child的时候,精确到查找objectName就可以定位到当前页面的那个textEdit了,

QList<QTextEdit*> text=this->tabWidget->findChildren<QTextEdit*>("text");   //找出tabWidget所有QTextEdit类的child
text.at(0)->append("123456");//对第一个child进行操作

当然也可以写成如下:
QList<QTextEdit*> text=this->tabWidget->findChildren<QTextEdit*>(this->tabWidget->currentWidget()->objectName());  
text.at(0)->append("123456");//对第一个child进行操作


总之,我想要的问题得以解决!!!感谢各位啦!

通过tabWidget作为入口操作textEdit,而不是通过指针text!!!!
离线robertkun

只看该作者 7楼 发表于: 2009-09-18
Re:通过TabWidget作为入口对其子部件进行操作       问题成功解决 ..
噢,是简单了很多噢,学习了~
                                              简单的生活使人快乐!
快速回复
限100 字节
 
上一个 下一个