Некоторые ошибки Qt - Как решить? - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть следующий main.cpp файл:

#include <QApplication>
#include "ui_checkabder.h"
#include <QDialog>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Ui::CheckAbder ui;
QDialog *dialog = new QDialog;
ui.setupUi(dialog);
dialog->show();
return app.exec();
}

И, получить следующие ошибки при попытке запустить программу:

C:/Users/avbder/Desktop/abder/main.cpp:7: error: 'CheckAbder' is not a member of 'Ui'

C:/Users/avbder/Desktop/abder/main.cpp:7: error: expected ';' before 'ui'

C:/Users/avbder/Desktop/abder/main.cpp:7: error: expected ';' before 'ui'

C:/Users/avbder/Desktop/abder/main.cpp:9: error: 'ui' was not declared in this scope

Содержимое ui_checkabder.h выглядит следующим образом:

/********************************************************************************
** Form generated from reading UI file 'checkabder.ui'
**
** Created: Mon Apr 18 10:01:09 2011
**      by: Qt User Interface Compiler version 4.7.3
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_CHECKABDER_H
#define UI_CHECKABDER_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHBoxLayout>
#include <QtGui/QHeaderView>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Form
{
public:
    QVBoxLayout *verticalLayout;
    QHBoxLayout *horizontalLayout;
    QLabel *label;
    QLineEdit *lineEdit;
    QHBoxLayout *horizontalLayout_2;
    QPushButton *okButton;
    QPushButton *cancelButton;

    void setupUi(QWidget *Form)
    {
        if (Form->objectName().isEmpty())
            Form->setObjectName(QString::fromUtf8("Form"));
        Form->resize(400, 300);
        verticalLayout = new QVBoxLayout(Form);
        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
        horizontalLayout = new QHBoxLayout();
        horizontalLayout->setObjectName(QString::fromUtf8("horizontalLayout"));
        label = new QLabel(Form);
        label->setObjectName(QString::fromUtf8("label"));
        QFont font;
        font.setFamily(QString::fromUtf8("Comic Sans MS"));
        font.setPointSize(16);
        label->setFont(font);

        horizontalLayout->addWidget(label);

        lineEdit = new QLineEdit(Form);
        lineEdit->setObjectName(QString::fromUtf8("lineEdit"));

        horizontalLayout->addWidget(lineEdit);


        verticalLayout->addLayout(horizontalLayout);

        horizontalLayout_2 = new QHBoxLayout();
        horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
        okButton = new QPushButton(Form);
        okButton->setObjectName(QString::fromUtf8("okButton"));
        okButton->setEnabled(false);
        QFont font1;
        font1.setFamily(QString::fromUtf8("Comic Sans MS"));
        font1.setBold(true);
        font1.setWeight(75);
        okButton->setFont(font1);

        horizontalLayout_2->addWidget(okButton);

        cancelButton = new QPushButton(Form);
        cancelButton->setObjectName(QString::fromUtf8("cancelButton"));
        cancelButton->setFont(font1);

        horizontalLayout_2->addWidget(cancelButton);


        verticalLayout->addLayout(horizontalLayout_2);


        retranslateUi(Form);

        QMetaObject::connectSlotsByName(Form);
    } // setupUi

    void retranslateUi(QWidget *Form)
    {
        Form->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
        label->setText(QApplication::translate("Form", "Name", 0, QApplication::UnicodeUTF8));
        okButton->setText(QApplication::translate("Form", "OK", 0, QApplication::UnicodeUTF8));
        cancelButton->setText(QApplication::translate("Form", "CANCEL", 0, QApplication::UnicodeUTF8));
    } // retranslateUi

};

namespace Ui {
    class Form: public Ui_Form {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_CHECKABDER_H

Есть идеи, как решить эти проблемы?

Спасибо.

Ответы [ 3 ]

1 голос
/ 19 апреля 2011

Вы должны немного понять UIC. Имя файла не имеет ничего общего с созданным содержимым пространств имен пользовательского интерфейса. Ваш виджет в .ui-файле называется «Форма», а не CheckAbder. Вы можете решить свою проблему двумя способами:

  1. Начните использовать Ui :: Form в вашем .cpp файле
  2. Переименуйте форму в CheckAbder в вашем .ui файле

Также убедитесь, что ваш файл .ui добавлен в проект, поэтому он автоматически генерирует новый файл ui _ *. H после изменения .ui

1 голос
/ 19 апреля 2011

Ваше имя класса Ui_Form и Ui::Form, а не CheckAbder.Вы должны переименовать его в Designer.

0 голосов
/ 19 апреля 2011
namespace Ui {
    class Form: public Ui_Form {};
} // namespace Ui

должно быть

namespace Ui {
    class CheckAbder: public Ui_Form {};
} // namespace Ui
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...