编译的时候经常遇到这个问题,怎么回事呀
我写了个程序,程序代码如下:ui_sort.h文件
程序代码:
/******************************************************************************** ** Form generated from reading UI file 'Sort.ui' ** ** Created: Tue Oct 18 21:51:12 2011 ** by: Qt User Interface Compiler version 4.7.4 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef UI_SORT_H #define UI_SORT_H #include <QtCore/QVariant> #include <QtGui/QAction> #include <QtGui/QApplication> #include <QtGui/QButtonGroup> #include <QtGui/QComboBox> #include <QtGui/QDialog> #include <QtGui/QGridLayout> #include <QtGui/QGroupBox> #include <QtGui/QHeaderView> #include <QtGui/QLabel> #include <QtGui/QPushButton> #include <QtGui/QSpacerItem> #include <QtGui/QVBoxLayout> QT_BEGIN_NAMESPACE class Ui_SortDialog { public: QGridLayout *gridLayout_4; QGroupBox *primaryGroupBox; QGridLayout *gridLayout; QLabel *label; QComboBox *primaryColumnCombo; QSpacerItem *horizontalSpacer; QLabel *label_2; QComboBox *primaryOderCombo; QVBoxLayout *verticalLayout; QPushButton *okButton; QPushButton *cancleButton; QSpacerItem *verticalSpacer; QPushButton *moreButton; QSpacerItem *verticalSpacer_2; QGroupBox *secondaryGroupBox; QGridLayout *gridLayout_2; QLabel *label_3; QComboBox *secondaryColumnCombo; QSpacerItem *horizontalSpacer_2; QLabel *label_4; QComboBox *secondaryOrderCombo; QGroupBox *tertiaryGroupBox; QGridLayout *gridLayout_3; QLabel *label_5; QComboBox *tertiaryColumnCombo; QSpacerItem *horizontalSpacer_3; QLabel *label_6; QComboBox *tertiaryOrderCombo; void setupUi(QDialog *SortDialog) { if (SortDialog->objectName().isEmpty()) SortDialog->setObjectName(QString::fromUtf8("SortDialog")); SortDialog->resize(278, 318); gridLayout_4 = new QGridLayout(SortDialog); gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4")); primaryGroupBox = new QGroupBox(SortDialog); primaryGroupBox->setObjectName(QString::fromUtf8("primaryGroupBox")); gridLayout = new QGridLayout(primaryGroupBox); gridLayout->setObjectName(QString::fromUtf8("gridLayout")); label = new QLabel(primaryGroupBox); label->setObjectName(QString::fromUtf8("label")); gridLayout->addWidget(label, 0, 0, 1, 1); primaryColumnCombo = new QComboBox(primaryGroupBox); primaryColumnCombo->setObjectName(QString::fromUtf8("primaryColumnCombo")); gridLayout->addWidget(primaryColumnCombo, 0, 1, 1, 1); horizontalSpacer = new QSpacerItem(50, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); gridLayout->addItem(horizontalSpacer, 0, 2, 1, 1); label_2 = new QLabel(primaryGroupBox); label_2->setObjectName(QString::fromUtf8("label_2")); gridLayout->addWidget(label_2, 1, 0, 1, 1); primaryOderCombo = new QComboBox(primaryGroupBox); primaryOderCombo->setObjectName(QString::fromUtf8("primaryOderCombo")); gridLayout->addWidget(primaryOderCombo, 1, 1, 1, 2); gridLayout_4->addWidget(primaryGroupBox, 0, 0, 1, 1); verticalLayout = new QVBoxLayout(); verticalLayout->setObjectName(QString::fromUtf8("verticalLayout")); okButton = new QPushButton(SortDialog); okButton->setObjectName(QString::fromUtf8("okButton")); okButton->setDefault(true); verticalLayout->addWidget(okButton); cancleButton = new QPushButton(SortDialog); cancleButton->setObjectName(QString::fromUtf8("cancleButton")); verticalLayout->addWidget(cancleButton); verticalSpacer = new QSpacerItem(20, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); verticalLayout->addItem(verticalSpacer); moreButton = new QPushButton(SortDialog); moreButton->setObjectName(QString::fromUtf8("moreButton")); moreButton->setCheckable(true); verticalLayout->addWidget(moreButton); gridLayout_4->addLayout(verticalLayout, 0, 1, 2, 1); verticalSpacer_2 = new QSpacerItem(20, 42, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout_4->addItem(verticalSpacer_2, 1, 0, 1, 1); secondaryGroupBox = new QGroupBox(SortDialog); secondaryGroupBox->setObjectName(QString::fromUtf8("secondaryGroupBox")); gridLayout_2 = new QGridLayout(secondaryGroupBox); gridLayout_2->setObjectName(QString::fromUtf8("gridLayout_2")); label_3 = new QLabel(secondaryGroupBox); label_3->setObjectName(QString::fromUtf8("label_3")); gridLayout_2->addWidget(label_3, 0, 0, 1, 1); secondaryColumnCombo = new QComboBox(secondaryGroupBox); secondaryColumnCombo->setObjectName(QString::fromUtf8("secondaryColumnCombo")); gridLayout_2->addWidget(secondaryColumnCombo, 0, 1, 1, 1); horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); gridLayout_2->addItem(horizontalSpacer_2, 0, 2, 1, 1); label_4 = new QLabel(secondaryGroupBox); label_4->setObjectName(QString::fromUtf8("label_4")); gridLayout_2->addWidget(label_4, 1, 0, 1, 1); secondaryOrderCombo = new QComboBox(secondaryGroupBox); secondaryOrderCombo->setObjectName(QString::fromUtf8("secondaryOrderCombo")); gridLayout_2->addWidget(secondaryOrderCombo, 1, 1, 1, 2); gridLayout_4->addWidget(secondaryGroupBox, 2, 0, 1, 1); tertiaryGroupBox = new QGroupBox(SortDialog); tertiaryGroupBox->setObjectName(QString::fromUtf8("tertiaryGroupBox")); gridLayout_3 = new QGridLayout(tertiaryGroupBox); gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3")); label_5 = new QLabel(tertiaryGroupBox); label_5->setObjectName(QString::fromUtf8("label_5")); gridLayout_3->addWidget(label_5, 0, 0, 1, 1); tertiaryColumnCombo = new QComboBox(tertiaryGroupBox); tertiaryColumnCombo->setObjectName(QString::fromUtf8("tertiaryColumnCombo")); gridLayout_3->addWidget(tertiaryColumnCombo, 0, 1, 1, 1); horizontalSpacer_3 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); gridLayout_3->addItem(horizontalSpacer_3, 0, 2, 1, 1); label_6 = new QLabel(tertiaryGroupBox); label_6->setObjectName(QString::fromUtf8("label_6")); gridLayout_3->addWidget(label_6, 1, 0, 1, 1); tertiaryOrderCombo = new QComboBox(tertiaryGroupBox); tertiaryOrderCombo->setObjectName(QString::fromUtf8("tertiaryOrderCombo")); gridLayout_3->addWidget(tertiaryOrderCombo, 1, 1, 1, 2); gridLayout_4->addWidget(tertiaryGroupBox, 3, 0, 1, 1); QWidget::setTabOrder(primaryColumnCombo, primaryOderCombo); QWidget::setTabOrder(primaryOderCombo, secondaryColumnCombo); QWidget::setTabOrder(secondaryColumnCombo, secondaryOrderCombo); QWidget::setTabOrder(secondaryOrderCombo, tertiaryColumnCombo); QWidget::setTabOrder(tertiaryColumnCombo, tertiaryOrderCombo); QWidget::setTabOrder(tertiaryOrderCombo, okButton); QWidget::setTabOrder(okButton, cancleButton); QWidget::setTabOrder(cancleButton, moreButton); retranslateUi(SortDialog); QObject::connect(okButton, SIGNAL(clicked()), SortDialog, SLOT(accept())); QObject::connect(cancleButton, SIGNAL(clicked()), SortDialog, SLOT(reject())); QObject::connect(moreButton, SIGNAL(toggled(bool)), secondaryGroupBox, SLOT(setVisible(bool))); QObject::connect(moreButton, SIGNAL(toggled(bool)), tertiaryGroupBox, SLOT(setVisible(bool))); QMetaObject::connectSlotsByName(SortDialog); } // setupUi void retranslateUi(QDialog *SortDialog) { SortDialog->setWindowTitle(QApplication::translate("SortDialog", "Sort", 0, QApplication::UnicodeUTF8)); primaryGroupBox->setTitle(QApplication::translate("SortDialog", "&Primary Key", 0, QApplication::UnicodeUTF8)); label->setText(QApplication::translate("SortDialog", "Column:", 0, QApplication::UnicodeUTF8)); primaryColumnCombo->clear(); primaryColumnCombo->insertItems(0, QStringList() << QApplication::translate("SortDialog", "None", 0, QApplication::UnicodeUTF8) ); label_2->setText(QApplication::translate("SortDialog", "Order:", 0, QApplication::UnicodeUTF8)); primaryOderCombo->clear(); primaryOderCombo->insertItems(0, QStringList() << QApplication::translate("SortDialog", "Ascending", 0, QApplication::UnicodeUTF8) << QApplication::translate("SortDialog", "Descending", 0, QApplication::UnicodeUTF8) ); okButton->setText(QApplication::translate("SortDialog", "OK", 0, QApplication::UnicodeUTF8)); cancleButton->setText(QApplication::translate("SortDialog", "Cancle", 0, QApplication::UnicodeUTF8)); moreButton->setText(QApplication::translate("SortDialog", "&More", 0, QApplication::UnicodeUTF8)); secondaryGroupBox->setTitle(QApplication::translate("SortDialog", "&Secondary Key", 0, QApplication::UnicodeUTF8)); label_3->setText(QApplication::translate("SortDialog", "Column:", 0, QApplication::UnicodeUTF8)); secondaryColumnCombo->clear(); secondaryColumnCombo->insertItems(0, QStringList() << QApplication::translate("SortDialog", "None", 0, QApplication::UnicodeUTF8) ); label_4->setText(QApplication::translate("SortDialog", "Order:", 0, QApplication::UnicodeUTF8)); secondaryOrderCombo->clear(); secondaryOrderCombo->insertItems(0, QStringList() << QApplication::translate("SortDialog", "Ascending", 0, QApplication::UnicodeUTF8) << QApplication::translate("SortDialog", "Descending", 0, QApplication::UnicodeUTF8) ); tertiaryGroupBox->setTitle(QApplication::translate("SortDialog", "&Tertiary Key", 0, QApplication::UnicodeUTF8)); label_5->setText(QApplication::translate("SortDialog", "Column:", 0, QApplication::UnicodeUTF8)); tertiaryColumnCombo->clear(); tertiaryColumnCombo->insertItems(0, QStringList() << QApplication::translate("SortDialog", "None", 0, QApplication::UnicodeUTF8) ); label_6->setText(QApplication::translate("SortDialog", "Order:", 0, QApplication::UnicodeUTF8)); tertiaryOrderCombo->clear(); tertiaryOrderCombo->insertItems(0, QStringList() << QApplication::translate("SortDialog", "Ascending", 0, QApplication::UnicodeUTF8) << QApplication::translate("SortDialog", "Descending", 0, QApplication::UnicodeUTF8) ); } // retranslateUi }; namespace Ui { class SortDialog: public Ui_SortDialog {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_SORT_Hsort.h文件:
程序代码:
#ifndef SORT_H #define SORT_H #include <QDialog> #include "ui_sort.h" class SortDialog : public Ui::SortDialog, public QDialog { Q_OBJECT public: SortDialog(QWidget *parent = 0); void setColumnRange(QChar first, QChar last); }; #endif // SORT_H
sort.cpp文件:
程序代码:
#include "sort.h" SortDialog::SortDialog(QWidget *parent) :QDialog(parent) { setupUi(this); this->secondaryGroupBox->hide(); this->tertiaryGroupBox->hide(); layout()->setSizeConstraint(QLayout::SetFixedSize); this->setColumnRange('A','Z'); } void SortDialog::setColumnRange(QChar first, QChar last) { this->primaryColumnCombo->clear(); this->secondaryColumnCombo->clear(); this->tertiaryColumnCombo->clear(); this->secondaryColumnCombo->addItem(tr("None")); this->tertiaryColumnCombo->addItem(tr("None")); this->primaryColumnCombo->setMinimumSize(this->secondaryColumnCombo->sizeHint()); QChar ch = first; while(ch != last) { this->primaryColumnCombo->addItem(QString(ch)); this->secondaryColumnCombo->addItem(QString(ch)); this->tertiaryColumnCombo->addItem(QString(ch)); ch = ch.unicode() + 1; } }
main.cpp文件:
程序代码:
#include <QtGui/QApplication> #include "sort.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); SortDialog *dialog = new SortDialog(); dialog->setColumnRange('C','F'); dialog->show(); return a.exec(); }
但是最后编译出现了一下错误:
为项目ExtendDialog执行构建步骤 ...
配置没有改变, 跳过 qmake 步骤.
正在启动 "C:\QtSDK\mingw\bin\mingw32-make.exe"
{1"?} {2?}
C:/QtSDK/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `F:/Qt Workspace/ExtendDialog'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -o debug\main.o main.cpp
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -o debug\sort.o sort.cpp
C:\QtSDK\Desktop\Qt\4.7.4\mingw\bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -D__GNUC__ -DWIN32 sort.h -o debug\moc_sort.cpp
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtCore" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\QtGui" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\include\ActiveQt" -I"debug" -I"c:\QtSDK\Desktop\Qt\4.7.4\mingw\mkspecs\win32-g++" -o debug\moc_sort.o debug\moc_sort.cpp
debug\moc_sort.cpp:41: error: 'staticMetaObject' is not a member of 'Ui::SortDialog'
debug\moc_sort.cpp: In member function 'virtual void* SortDialog::qt_metacast(const char*)':
debug\moc_sort.cpp:62: error: 'qt_metacast' is not a member of 'SortDialog::qt_metacast(const char*)::QMocSuperClass'
debug\moc_sort.cpp: In member function 'virtual int SortDialog::qt_metacall(QMetaObject::Call, int, void**)':
debug\moc_sort.cpp:68: error: 'qt_metacall' is not a member of 'SortDialog::qt_metacall(QMetaObject::Call, int, void**)::QMocSuperClass'
mingw32-make[1]: Leaving directory `F:/Qt Workspace/ExtendDialog'
mingw32-make[1]: *** [debug/moc_sort.o] Error 1
mingw32-make: *** [debug] Error 2
进程"C:\QtSDK\mingw\bin\mingw32-make.exe"退出,退出代码 2 。
构建项目ExtendDialog 时发生错误 (目标: 桌面)
当执行构建步骤 'Make'时
该如何解决呢。