Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32355
  • 博文数量: 13
  • 博客积分: 317
  • 博客等级: 二等列兵
  • 技术积分: 175
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-26 18:22
文章分类

全部博文(13)

文章存档

2012年(13)

我的朋友

分类: 嵌入式

2012-09-28 14:18:54

QT的很多教程上都写
 
 uic -o hello.h hello.ui
 
 uic -o hello.cpp -impl hello.h hello.ui
 
 来生成cpp和h文件,但是第二步其实是出不来的,系统认不出-impl的参数。
 
 但是第一步生成的h文件其实已经内容很全了,我们未必需要cpp文件,我们只要在稍作修改就能让这个h顺利运行。
 
 假设:生成的h文件的文件名为:“test.h”,test.h的内容如下(注意我在代码里用红色标出的部分)

  1. #ifndef FORM1_H
  2.  #define FORM1_H
  3.  
  4.  #include <QtCore/QVariant>
  5.  #include <QtGui/QAction>
  6.  #include <QtGui/QApplication>
  7.  #include <QtGui/QButtonGroup>
  8.  #include <QtGui/QPushButton>
  9.  #include <QtGui/QWidget>
  10.  
  11.  class Ui_Form
  12.  {
  13.  public:
  14.  QPushButton *pushButton;
  15.  
  16.  void setupUi(QWidget *Form)
  17.  {
  18.  Form->setObjectName(QString::fromUtf8("Form"));
  19.  Form->resize(QSize(400, 300).expandedTo(Form->minimumSizeHint()));
  20.  pushButton = new QPushButton(Form);
  21.  pushButton->setObjectName(QString::fromUtf8("pushButton"));
  22.  pushButton->setGeometry(QRect(150, 190, 87, 30));
  23.  retranslateUi(Form);
  24.  QObject::connect(pushButton, SIGNAL(clicked()), Form, SLOT(close()));
  25.  
  26.  QMetaObject::connectSlotsByName(Form);
  27.  } // setupUi
  28.  
  29.  void retranslateUi(QWidget *Form)
  30.  {
  31.  Form->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
  32.  pushButton->setText(QApplication::translate("Form", "PushButton", 0, QApplication::UnicodeUTF8));
  33.  Q_UNUSED(Form);
  34.  } // retranslateUi
  35.  
  36.  };
  37.  
  38.  namespace Ui {
  39.  class Form: public Ui_Form {};
  40.  } // namespace Ui
  41.  
  42.  #endif // FORM1_H
那么,我们只要在主文件(就是有main函数的那个cpp)里,添加一个类(这个类的名字可以自行修改)

  1. class Win : public QWidget, public Ui::Form
  2.  {
  3.  public:
  4.  Win(QWidget *parent = 0):QWidget(parent)
  5.  {setupUi(this);}
  6.  };
上面这段代码中红色的内容要与之前h文件中红色的部分相对应。
 
 然后#include "test.h"//就是用ui生成的那个h文件,不需要修改,直接include
 
 在main函数中,用以下方法调用就行了:

  1. Win w;
  2. w.show();
比如:我的main.cpp的内容就是

点击(此处)折叠或打开

  1. #include <QApplication>
  2.  #include <QWidget>
  3.  #include "button.h"
  4.  
  5.  class Win : public QWidget, public Ui::Form
  6.  {
  7.  public:
  8.  Win(QWidget *parent = 0):QWidget(parent)
  9.  {setupUi(this);}
  10.  };
  11.  
  12.  int main(int argc, char *argv[])
  13.  {
  14.  QApplication app(argc, argv);
  15.  Win w;
  16.  w.show();
  17.  return app.exec();
  18.  }


阅读(1214) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~