• 5679阅读
  • 2回复

Qt Designer 的一个问题!谢谢! [复制链接]

上一主题 下一主题
离线wwq1105
 

只看楼主 倒序阅读 楼主  发表于: 2007-01-19
Qt Designer 的一个问题!谢谢!
下面这个简单的程序,就是在QT中显示 .UI 文件 。以前我曾经编译成功了,但是不知道后来我改动了什么,就出现了错误,我怎么都找不到错,请求帮忙!
qtDesigner 做出 imagedialog.ui 文件
====================
我建立了一个.h文件 image.h 如下
=====================
#include "ui_imagedialog.h"
class ImageDialog : public QDialog
  {
    Q_OBJECT
  public:
    ImageDialog(QWidget *parent = 0);
  private:
    Ui::ImageDialog ui;
  }
======================
建立image.cpp 如下
======================
#include "image.h"
ImageDialog::ImageDialog(QWidget *parent): QDialog(parent)
  {
    ui.setupUi(this);
  }
====================
main.cpp如下
==================
#include "image.h"
#include <QApplication>
int main(int argc, char *argv[])
  {
    QApplication app(argc, argv);
    ImageDialog * window=new ImageDialog;
    window->show();
    return app.exec();
  }
================
编译后出现如下错误:
image.cpp:2: error: new types may not be defined in a return type
image.cpp:2: error: return type specification for constructor invalid
==================
不清楚为什么啊! 请教!

====================
编译生成的ui_imagedialog.h文件结构如下:
#ifndef UI_IMAGEDIALOG_H
#define UI_IMAGEDIALOG_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QCheckBox>
#include <QtGui/QDialog>
#include <QtGui/QGroupBox>
#include <QtGui/QHBoxLayout>
#include <QtGui/QPushButton>
#include <QtGui/QVBoxLayout>

class Ui_ImageDialog
{
public:
  QVBoxLayout *vboxLayout;
  QHBoxLayout *hboxLayout;
  QGroupBox *groupBox;
  QVBoxLayout *vboxLayout1;
  QVBoxLayout *vboxLayout2;
  QCheckBox *checkBox_1;
  QCheckBox *checkBox_2;
  QCheckBox *checkBox_3;
  QVBoxLayout *vboxLayout3;
  QPushButton *pushButton_1;
  QPushButton *pushButton_2;
  QPushButton *pushButton_3;
  QPushButton *pushButton_4;

  void setupUi(QDialog *ImageDialog)
  {
  ImageDialog->setObjectName(QString::fromUtf8("ImageDialog"));
  ImageDialog->resize(QSize(219, 159).expandedTo(ImageDialog->minimumSizeHint()));
  ImageDialog->setMinimumSize(QSize(219, 159));
  ImageDialog->setMaximumSize(QSize(219, 159));
  vboxLayout = new QVBoxLayout(ImageDialog);
  vboxLayout->setSpacing(6);
  vboxLayout->setMargin(9);
  vboxLayout->setObjectName(QString::fromUtf8("vboxLayout"));
  hboxLayout = new QHBoxLayout();
  hboxLayout->setSpacing(6);
  hboxLayout->setMargin(0);
  hboxLayout->setObjectName(QString::fromUtf8("hboxLayout"));
  groupBox = new QGroupBox(ImageDialog);
  groupBox->setObjectName(QString::fromUtf8("groupBox"));
  vboxLayout1 = new QVBoxLayout(groupBox);
  vboxLayout1->setSpacing(6);
  vboxLayout1->setMargin(9);
  vboxLayout1->setObjectName(QString::fromUtf8("vboxLayout1"));
  vboxLayout2 = new QVBoxLayout();
  vboxLayout2->setSpacing(6);
  vboxLayout2->setMargin(0);
  vboxLayout2->setObjectName(QString::fromUtf8("vboxLayout2"));
  checkBox_1 = new QCheckBox(groupBox);
  checkBox_1->setObjectName(QString::fromUtf8("checkBox_1"));

  vboxLayout2->addWidget(checkBox_1);

  checkBox_2 = new QCheckBox(groupBox);
  checkBox_2->setObjectName(QString::fromUtf8("checkBox_2"));

  vboxLayout2->addWidget(checkBox_2);

  checkBox_3 = new QCheckBox(groupBox);
  checkBox_3->setObjectName(QString::fromUtf8("checkBox_3"));
  vboxLayout2->addWidget(checkBox_3);
  vboxLayout1->addLayout(vboxLayout2);
  hboxLayout->addWidget(groupBox);
  vboxLayout3 = new QVBoxLayout();
  vboxLayout3->setSpacing(6);
  vboxLayout3->setMargin(10);
  vboxLayout3->setObjectName(QString::fromUtf8("vboxLayout3"));
  pushButton_1 = new QPushButton(ImageDialog);
  pushButton_1->setObjectName(QString::fromUtf8("pushButton_1"));
  vboxLayout3->addWidget(pushButton_1);
  pushButton_2 = new QPushButton(ImageDialog);
  pushButton_2->setObjectName(QString::fromUtf8("pushButton_2"));
  vboxLayout3->addWidget(pushButton_2);
  pushButton_3 = new QPushButton(ImageDialog);
  pushButton_3->setObjectName(QString::fromUtf8("pushButton_3"));
  vboxLayout3->addWidget(pushButton_3);
  pushButton_4 = new QPushButton(ImageDialog);
  pushButton_4->setObjectName(QString::fromUtf8("pushButton_4"));
  vboxLayout3->addWidget(pushButton_4);
  hboxLayout->addLayout(vboxLayout3);
  vboxLayout->addLayout(hboxLayout);
  retranslateUi(ImageDialog);
  QObject::connect(pushButton_1, SIGNAL(clicked()), checkBox_1, SLOT(toggle()));
  QObject::connect(pushButton_2, SIGNAL(clicked()), checkBox_2, SLOT(toggle()));
  QObject::connect(pushButton_3, SIGNAL(clicked()), checkBox_3, SLOT(toggle()));
  QObject::connect(pushButton_4, SIGNAL(clicked()), checkBox_1, SLOT(toggle()));
  QObject::connect(pushButton_4, SIGNAL(clicked()), checkBox_2, SLOT(toggle()));
  QObject::connect(pushButton_4, SIGNAL(clicked()), checkBox_3, SLOT(toggle()));

  QMetaObject::connectSlotsByName(ImageDialog);
  } // setupUi
  void retranslateUi(QDialog *ImageDialog)
  {
  ImageDialog->setWindowTitle(QApplication::translate("ImageDialog", "Dialog", 0, QApplication::UnicodeUTF8));
  groupBox->setTitle(QApplication::translate("ImageDialog", "GroupBox", 0, QApplication::UnicodeUTF8));
  checkBox_1->setText(QApplication::translate("ImageDialog", "CheckBox", 0, QApplication::UnicodeUTF8));
  checkBox_2->setText(QApplication::translate("ImageDialog", "CheckBox", 0, QApplication::UnicodeUTF8));
  checkBox_3->setText(QApplication::translate("ImageDialog", "CheckBox", 0, QApplication::UnicodeUTF8));
  pushButton_1->setText(QApplication::translate("ImageDialog", "&Select1", 0, QApplication::UnicodeUTF8));
  pushButton_2->setText(QApplication::translate("ImageDialog", "&Select2", 0, QApplication::UnicodeUTF8));
  pushButton_3->setText(QApplication::translate("ImageDialog", "&Select3", 0, QApplication::UnicodeUTF8));
  pushButton_4->setText(QApplication::translate("ImageDialog", "&Select4", 0, QApplication::UnicodeUTF8));
  Q_UNUSED(ImageDialog);
  } // retranslateUi

};
namespace Ui {
  class ImageDialog: public Ui_ImageDialog {};
} // namespace Ui
#endif // UI_IMAGEDIALOG_H
[ 此贴被XChinux在2007-01-22 00:06重新编辑 ]
离线wwq1105

只看该作者 1楼 发表于: 2007-01-19
问题找到了,但是不知具体原因;
问题是:在image.h文件中最后少了一个 ";"号
加上就正确了。 谁能告诉我为什么,感觉这个不要也可以的啊!
#include "ui_imagedialog.h"
class ImageDialog : public QDialog
{
  Q_OBJECT
public:
  ImageDialog(QWidget *parent = 0);
private:
  Ui::ImageDialog ui;
};
离线XChinux

只看该作者 2楼 发表于: 2007-01-22
当然有必要了,语法问题。
C++里,类的定义后面要有分号的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个