C++ 在‘之前应为类名;{’;
“{”标记之前应为类名{ 这是我的密码:C++ 在‘之前应为类名;{’;,c++,qt,qtgui,qmainwindow,qdialog,C++,Qt,Qtgui,Qmainwindow,Qdialog,“{”标记之前应为类名{ 这是我的密码: #ifndef COLE_H #define COLE_H #include <QDialog> #include "mainwindow.h" namespace Ui { class COLE; } class COLE : public QDialog , public Ui::MainWindow { Q_OBJECT public: explicit COLE(QWidget *parent = 0);
#ifndef COLE_H
#define COLE_H
#include <QDialog>
#include "mainwindow.h"
namespace Ui {
class COLE;
}
class COLE : public QDialog , public Ui::MainWindow
{
Q_OBJECT
public:
explicit COLE(QWidget *parent = 0);
~COLE();
private slots:
void on_pushButton_clicked();
public:
double var1;
private:
Ui::COLE *ui;
};
#endif // COLE_H
\ifndef COLE\u H
#定义COLE_H
#包括
#包括“mainwindow.h”
名称空间用户界面{
科尔类;
}
类:公共QDialog,公共Ui::MainWindow
{
Q_对象
公众:
显式COLE(QWidget*parent=0);
~COLE();
专用插槽:
单击按钮时无效();
公众:
双var1;
私人:
Ui::COLE*Ui;
};
#完//COLE_H
我知道问题来自“public Ui::MainWindow”,但我确信应该是这样的
请提供帮助。您似乎正在处理两个问题 1) 您应该包括
ui\u mainwindow.h
而不是mainwindow.h
,因为这通常是ui编译器(即uic)默认生成的,除非您显式更改它。我假设情况并非如此,因为这通常是不必要的
至于第二个问题,你可以用两种不同的方式来解决:
2a):简而言之,这种方式使用组合而不是从UI类继承。因此,如果选择这种方式,则只需要指针成员,而不是继承UI类
2b):简而言之,这种方式使用多重继承,正如其名称所示,而不是组合。这种方式不使用指针成员,而是私下从ui类继承
目前,您似乎在上述两种情况中混合使用了错误的方法。请尝试使用其中一种。Ui名称空间中是否真的有其他COLE?您可能需要#包括“Ui_mainwindow.h”等等。是“public Ui::mainwindow”需要?这里的重要问题是:通过继承
Ui::MainWindow
,您试图实现什么?我总是使用多重公共继承方法,因此我没有注意到私有的“Ui::COLE*Ui”部分。OP不应该同时使用这两种方法。