LINUX.ORG.RU

Class Ui не определен- Не вижу, где ошибка


0

0

Мне нужно написать простую программу, которая выдает результаты, в зависимости от одной из 6 выбранных строк. В Qt designer "нарисовал форму",- решил отталкиваться от мана по Qt designer.
Во время компиляции выдаются ошибки:
...
g++ -c -pipe -march=pentium4 -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o guitf.o guitf.cpp
0guitf.h:37: error: ‘Ui’ has not been declared
0guitf.h:37: error: expected ‘;’ before ‘ui’
guitf.cpp: In constructor ‘Stringsform::Stringsform(QWidget*)’:
guitf.cpp:8: error: ‘ui’ was not declared in this scope
make: *** [guitf.o] Error 1

Я так понимаю, что основная причина в том, что не определен Ui, к которому идет обращение из 0guitf.h (Ui::Stringsform ui;). Но в этом файле я подключаю ui_guitf.h, где есть строки:
...
namespace Ui {
class Stringsform: public Ui_Stringsform {};
} // namespace Ui
...
Точнее, файл 0guitf.h таков:
#ifndef UI_GUITF_H
#define UI_GUITF_H
#include "ui_guitf.h"
class Stringsform : public QWidget
{
Q_OBJECT
public:
Stringsform(QWidget *parent = 0);
private:
Ui::Stringsform ui;
};
#endif
Файл ui_guitf.h, как я говорил, содержит namespace Ui (этот файл сделан uic).
Знающие C++, просьба помочь, где ошибка.

Посмотри какой header-guard сгенерировал uic в ui_guitf.h, не такой ли:
#ifndef UI_GUITF_H 
#define UI_GUITF_H 

Если да, то у тебя обычный конфликт header-guard'ов. Поменяй в 0guitf.h
#ifndef UI_GUITF_H 
#define UI_GUITF_H,

на

#ifndef MY_0GUITF_H 
#define MY_0GUITF_H 


Должно полегчать.

Sectoid ★★★★★
()
Ответ на: комментарий от Deleted

sinitsin@localhost ~/MyProgrs/0begin $ cat 0guitf.h
#ifndef UI_GUITF_H
#define UI_GUITF_H
#include "ui_guitf.h"
class Stringsform : public QWidget
{
Q_OBJECT
public:
Stringsform(QWidget *parent = 0);
private:
Ui::Stringsform ui;
};
#endif

sinitsin@localhost ~/MyProgrs/0begin $ cat guitf.cpp
#include <QtGui>
#include "0guitf.h"
Stringsform::Stringsform(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}

sinitsin@localhost ~/MyProgrs/0begin $ cat main.cpp
#include <QApplication>
#include "0guitf.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Stringsform guitf;
guitf.show();
return app.exec();
}

sinitsin@localhost ~/MyProgrs/0begin $ cat ui_guitf.h
#ifndef UI_GUITF_H
#define UI_GUITF_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGroupBox>
#include <QtGui/QMainWindow>
#include <QtGui/QMenuBar>
#include <QtGui/QPushButton>
#include <QtGui/QRadioButton>
#include <QtGui/QStatusBar>
#include <QtGui/QWidget>
class Ui_Stringsform
{
public:
QWidget *centralwidget;
QGroupBox *groupBox;
QRadioButton *radioButton;
QRadioButton *radioButton_2;
QRadioButton *radioButton_3;
QRadioButton *radioButton_4;
QRadioButton *radioButton_5;
QRadioButton *radioButton_6;
QPushButton *pushButton;
QPushButton *pushButton_2;
QPushButton *pushButton_3;
QMenuBar *menubar;
QStatusBar *statusbar;

void setupUi(QMainWindow *Stringsform)
{
Stringsform->setObjectName(QString::fromUtf8("Stringsform"));
Stringsform->setWindowModality(Qt::ApplicationModal);
centralwidget = new QWidget(Stringsform);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
groupBox = new QGroupBox(centralwidget);
groupBox->setObjectName(QString::fromUtf8("groupBox"));
groupBox->setGeometry(QRect(230, 60, 201, 201));
radioButton = new QRadioButton(groupBox);
radioButton->setObjectName(QString::fromUtf8("radioButton"));
radioButton->setGeometry(QRect(10, 20, 95, 23));
radioButton_2 = new QRadioButton(groupBox);
radioButton_2->setObjectName(QString::fromUtf8("radioButton_2"));
radioButton_2->setGeometry(QRect(10, 40, 95, 23));
radioButton_3 = new QRadioButton(groupBox);
radioButton_3->setObjectName(QString::fromUtf8("radioButton_3"));
radioButton_3->setGeometry(QRect(10, 60, 95, 23));
radioButton_4 = new QRadioButton(groupBox);
radioButton_4->setObjectName(QString::fromUtf8("radioButton_4"));
radioButton_4->setGeometry(QRect(10, 80, 95, 23));
radioButton_5 = new QRadioButton(groupBox);
radioButton_5->setObjectName(QString::fromUtf8("radioButton_5"));
radioButton_5->setGeometry(QRect(10, 100, 95, 23));
radioButton_6 = new QRadioButton(groupBox);
radioButton_6->setObjectName(QString::fromUtf8("radioButton_6"));
radioButton_6->setGeometry(QRect(10, 120, 95, 23));
pushButton = new QPushButton(centralwidget);
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(360, 290, 75, 27));
pushButton_2 = new QPushButton(centralwidget);
pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
pushButton_2->setGeometry(QRect(280, 290, 75, 27));
pushButton_3 = new QPushButton(centralwidget);
pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
pushButton_3->setGeometry(QRect(200, 290, 75, 27));
Stringsform->setCentralWidget(centralwidget);
menubar = new QMenuBar(Stringsform);
menubar->setObjectName(QString::fromUtf8("menubar"));
menubar->setGeometry(QRect(0, 0, 800, 29));
Stringsform->setMenuBar(menubar);
statusbar = new QStatusBar(Stringsform);
statusbar->setObjectName(QString::fromUtf8("statusbar"));
Stringsform->setStatusBar(statusbar);
retranslateUi(Stringsform);
QSize size(800, 600);
size = size.expandedTo(Stringsform->minimumSizeHint());
Stringsform->resize(size);
QMetaObject::connectSlotsByName(Stringsform);
} // setupUi
void retranslateUi(QMainWindow *Stringsform)
{
Stringsform->setWindowTitle(QApplication::translate("Stringsform", "MainWindow", 0, QApplication::UnicodeUTF8));
groupBox->setTitle(QApplication::translate("Stringsform", "Strings", 0, QApplication::UnicodeUTF8));
radioButton->setText(QApplication::translate("Stringsform", "RadioButton", 0, QApplication::UnicodeUTF8));
radioButton_2->setText(QApplication::translate("Stringsform", "RadioButton", 0, QApplication::UnicodeUTF8));
radioButton_3->setText(QApplication::translate("Stringsform", "RadioButton", 0, QApplication::UnicodeUTF8));
radioButton_4->setText(QApplication::translate("Stringsform", "RadioButton", 0, QApplication::UnicodeUTF8));
radioButton_5->setText(QApplication::translate("Stringsform", "RadioButton", 0, QApplication::UnicodeUTF8));
radioButton_6->setText(QApplication::translate("Stringsform", "RadioButton", 0, QApplication::UnicodeUTF8));
pushButton->setText(QApplication::translate("Stringsform", "PushButton", 0, QApplication::UnicodeUTF8));
pushButton_2->setText(QApplication::translate("Stringsform", "PushButton", 0, QApplication::UnicodeUTF8));
pushButton_3->setText(QApplication::translate("Stringsform", "PushButton", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Stringsform);
} // retranslateUi

};
namespace Ui {
class Stringsform: public Ui_Stringsform {};
} // namespace Ui
#endif // UI_GUITF_H

meloman
() автор топика
Ответ на: комментарий от meloman

Тебе ж сказали убери нахрен вот это из 0guitf.h, самому не видно что ли какая ерунда получается?

#ifndef UI_GUITF_H
#define UI_GUITF_H

Deleted
()
Ответ на: комментарий от Deleted

Увидел, спасибо! - Когда говорили, поздно было, не внимательно читал.

meloman
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.