Qt如何在一个槽函数中访问另一槽函数的变量,解决未声明报错问题
问题原因
C++ 的局部变量作用域仅限定在声明它的代码块内部,你在 on_pushload_clicked() 函数中声明的 QPixmap img 是该函数的局部临时变量,函数执行完毕后该变量就会被系统销毁,因此在另一个槽函数 on_pushprocess_clicked() 中无法访问到这个变量,就会抛出 "img" was not declared in this scope 的作用域错误。
解决方法
将 img 提升为 MainWindow 类的成员变量即可,具体修改步骤如下:
- 打开
MainWindow对应的头文件(通常命名为mainwindow.h),在类的私有成员区域添加QPixmap类型的成员变量声明:
class MainWindow : public QMainWindow { Q_OBJECT // 此处保留你原有类的其他定义内容 private: Ui::MainWindow *ui; QPixmap img; // 新增该行,将img设为类的成员变量 };
- 修改
on_pushload_clicked()函数的实现,删除原有局部变量的类型声明,直接给类成员变量赋值:
void MainWindow::on_pushload_clicked() { QString url = QFileDialog::getOpenFileName(this, tr("Load Color Image File"), QString(), tr("*.jpg ;*.png ;*.jpeg ;;All Files (*)")); img = QPixmap(url); }
on_pushprocess_clicked()函数的原有代码无需修改,运行时即可正常访问到类成员变量img。
内容的提问来源于stack exchange,提问作者javad hosseinian
相关产品推荐
相关产品推荐

