Qt开发报错‘no member named 'setupUi'’问题求助
解决Qt中‘no member named 'setupUi'’错误
你的问题核心是ui成员的类型和实例化对象完全错误,Qt通过uic工具生成的UI类会放在Ui命名空间下,而你错误地用了自己定义的SchedulerScan类来声明和实例化ui指针,导致找不到setupUi方法。
修正步骤:
修改头文件中的ui成员类型
把private部分的SchedulerScan *ui;改为Ui::SchedulerScan *ui;,同时调整前向声明的命名空间为Ui(uic生成的类默认在这个命名空间)。修正后的头文件:
#ifndef SCHEDULERSCAN_H #define SCHEDULERSCAN_H #include <QMainWindow> QT_BEGIN_NAMESPACE namespace Ui { class SchedulerScan; } QT_END_NAMESPACE class SchedulerScan : public QMainWindow { Q_OBJECT public: SchedulerScan(QWidget *parent = nullptr); ~SchedulerScan(); private: Ui::SchedulerScan *ui; }; #endif // SCHEDULERSCAN_H修正cpp文件中的ui实例化代码
构造函数里初始化ui时,要实例化Ui::SchedulerScan而非自己的SchedulerScan类:修正后的cpp文件:
#include "schedulerscan.h" #include "ui_schedulerscan.h" SchedulerScan::SchedulerScan(QWidget *parent) : QMainWindow(parent), ui(new Ui::SchedulerScan) { ui->setupUi(this); } SchedulerScan::~SchedulerScan() { delete ui; }额外检查
- 确保你的
.ui文件名是schedulerscan.ui,这样uic生成的头文件才是ui_schedulerscan.h,且里面的类是Ui::SchedulerScan。 - 重新构建项目,让Qt Creator自动运行uic工具生成正确的UI头文件。
- 确保你的
内容的提问来源于stack exchange,提问作者Thanh Duy Cao
相关产品推荐
相关产品推荐

