向MainWindow类添加st()函数后调用失败,报错Ui::MainWindow无该成员
解决Qt中
'class Ui::MainWindow' has no member named 'st'报错问题 嘿,这个问题很好搞定!咱们先把报错的根源捋清楚:
你把st()函数定义在了自己写的MainWindow类里,但调用的时候用了ui->st()——可ui是Ui::MainWindow类的指针啊!这俩根本不是同一个类:
Ui::MainWindow是Qt Designer自动生成的界面类,只管界面控件的布局和初始化;- 你写的
MainWindow是继承自QMainWindow的业务逻辑类,ui只是它的一个成员指针而已。
所以正确的调用方式有两种:
方法一:直接调用自身的成员函数(推荐)
你肯定是在MainWindow的成员函数(比如槽函数on_pushButton_4_clicked)里调用st(),直接写函数名或者用this指代自身就行:
void MainWindow::on_pushButton_4_clicked() { // 直接调用,或者 this->st(); 效果完全一致 st(); }
方法二:把函数加到Ui类(不推荐)
如果你非要让Ui::MainWindow拥有st()函数,一定要记住:绝对不要直接修改Qt自动生成的ui_mainwindow.h文件——下次用Qt Designer修改界面时,这个文件会被重新生成,你的代码会直接丢失。如果确实有这种需求,得通过Qt Designer的自定义控件机制实现,但这完全没必要,方法一已经足够解决问题了。
内容的提问来源于stack exchange,提问作者vico
相关产品推荐
相关产品推荐

