QT如何访问容器(提升后的类)内的其他控件

当我们想访问qt中一个容器(或提升后的类)内的其他控件时(这里使用tabwidget作为例子),因为提升后的控件是作为一个整体的所有我们不能直接拿到里面的值,这时想在其他方法中需要拿到它里面的控件中的数据;我们有两种方法去访问tabwidget中的控件的数据



方法一:类型转换


因为我们在访问时是可以访问到tabwidget中的当前的页面的,然后此时我们先把当前页面赋值到QWidget这个基类中,再把这个基类转成我们需要获取的派生类控件的类型;因为这里使用的是C++中的dynamic_cast转换,它的作用是把基类的指针或者引用安全地转为继承类(派生类)中的类型:例如现在我们有两个方法,一个方法on_pushButton_clicked()是点击一下添加一个页面并且创建一个textedit控件的,另一个方法on_pushButton_2_clicked()是读取当前页面的textedit控件中的内容

void MainWindow::on_pushButton_clicked()
{
	QTextEdit *t1 = new QTextEdit;//创建一个textedit控件
	.......
}
void MainWindow::on_pushButton_2_clicked()
{
	 QWidget *w = ui->tabWidget->currentWidget();//获取tabwidget中的当前页面赋值到基类指针中
	 QTextEdit *et = dynamic_cast<QTextEdit *>(w);//使用widget基类转成我们需要获取的当前页面内的控件
	 if(et==NULL)
	      return ;//判断是否转换成功
	 .......
}


方法二:在类中进行定义,此时在不同地方可以进行访问,当我们每次添加一个页面时就创建一个控件类型

在类中定义后,cpp文件:

void MainWindow::on_pushButton_clicked()
{
	//每次申请一次内存
	t1 = new QTextEdit;
	.......
}
void MainWindow::on_pushButton_2_clicked()
{
	//然后可以直接在其他方法使用
 	QString s =  t1->toPlainText();
	......
}


这两种方法都是可行的,但是建议使用第一种方法

其中上面的详细代码,可以到下面链接去查看:

qt实现文本编辑框(简易版)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值