将qt3转换为qt4的步骤

将qt3转换为qt4的步骤,qt4,Qt4,如何使用uic3以清晰的步骤将qt3格式转换为qt4格式?qt4随工具uic3提供,用于处理旧的.ui文件。它可以通过两种方式使用: 为小部件生成头文件和源代码,以实现使用Qt Designer 3添加的任何自定义信号和插槽 生成可与Qt Designer 4一起使用的新UI文件 您可以结合使用这两种方法来获取UI、头文件和源文件,这些文件可以作为将用户界面移植到Qt4的起点 uic3 myform.ui > myform.h uic3 -impl myform.h myform.ui

如何使用uic3以清晰的步骤将qt3格式转换为qt4格式?

qt4随工具uic3提供,用于处理旧的.ui文件。它可以通过两种方式使用:

  • 为小部件生成头文件和源代码,以实现使用Qt Designer 3添加的任何自定义信号和插槽
  • 生成可与Qt Designer 4一起使用的新UI文件
您可以结合使用这两种方法来获取UI、头文件和源文件,这些文件可以作为将用户界面移植到Qt4的起点

uic3 myform.ui > myform.h
uic3 -impl myform.h myform.ui > myform.cpp
结果文件myform.h和myform.cpp使用QWidget实现Qt4中的表单,QWidget将包括UI文件中指定的自定义信号、插槽和连接。但是,有关此方法的限制,请参见下文

第二种方法是使用uic3将Qt Designer 3.ui文件转换为Qt Designer 4格式:

 uic3 -convert myform3.ui > myform4.ui
生成的文件myform4.ui可以在Qt Designer 4中编辑。表单的头文件由Qt4的uic生成。有关使用Qt Designer 4创建的表单的首选方法的信息,请参阅Qt Designer手册应用程序一章中的使用Designer UI文件

注意:uic3有以下限制:

将Qt3UI文件转换为Qt4有一些限制。最明显的限制是,由于uic不再生成QObject,因此无法为表单定义自定义信号或插槽。相反,程序员必须在主容器中定义这些信号和插槽,并在调用setupUi()后将它们连接到表单中的小部件。例如:

class HelloWorldWidget : public QWidget, public Ui::HelloWorld
{
 Q_OBJECT
 public:
 HelloWorldWidget(QWidget *parent = 0);

 public slots:
 void mySlot();
 };

 HelloWorldWidget::HelloWorldWidget(QWidget *parent)
 : QWidget(parent)
 {
  setupUi(this);

  QObject::connect(pushButton, SIGNAL(clicked()),
                  this, SLOT(mySlot()));
  }

  void HelloWorldWidget::mySlot()
  {
    ...
  }
 class HelloWorldWidget : public QWidget, public Ui::HelloWorld
 {
  Q_OBJECT

  public:
  HelloWorldWidget(QWidget *parent = 0);

  public slots:
  void on_pushButton_clicked();
  };

  HelloWorldWidget::HelloWorldWidget(QWidget *parent)
  : QWidget(parent)
  {
     setupUi(this);
  }

   void HelloWorldWidget::on_pushButton_clicked()
   {
       ...
   }
移植包含自定义信号和插槽的表单的一种快速而肮脏的方法是使用uic3而不是uic生成代码。由于uic3确实生成QWidget,因此它将使用UI文件中指定的自定义信号、插槽和连接填充它。但是,uic3只能从Qt3UI文件生成代码,这意味着这些UI文件永远不会被翻译,需要使用QtDesigner3进行编辑

还请注意,可以在表单中的小部件和主容器之间创建隐式连接。在setupUi()用子窗口小部件填充主容器后,它将扫描主容器的插槽列表,以查找具有\u objectName\u signalName()格式的名称

如果表单包含一个对象名为objectName的小部件,并且该小部件有一个名为signalName的信号,那么该信号将连接到主容器的插槽。例如:

class HelloWorldWidget : public QWidget, public Ui::HelloWorld
{
 Q_OBJECT
 public:
 HelloWorldWidget(QWidget *parent = 0);

 public slots:
 void mySlot();
 };

 HelloWorldWidget::HelloWorldWidget(QWidget *parent)
 : QWidget(parent)
 {
  setupUi(this);

  QObject::connect(pushButton, SIGNAL(clicked()),
                  this, SLOT(mySlot()));
  }

  void HelloWorldWidget::mySlot()
  {
    ...
  }
 class HelloWorldWidget : public QWidget, public Ui::HelloWorld
 {
  Q_OBJECT

  public:
  HelloWorldWidget(QWidget *parent = 0);

  public slots:
  void on_pushButton_clicked();
  };

  HelloWorldWidget::HelloWorldWidget(QWidget *parent)
  : QWidget(parent)
  {
     setupUi(this);
  }

   void HelloWorldWidget::on_pushButton_clicked()
   {
       ...
   }
由于命名约定,setupUi()自动将按钮的clicked()信号连接到HelloWorldWidget的on_Button_clicked()插槽


我从

Qt4中获得了这个解决方案,它附带了用于处理旧的.ui文件的工具uic3。它可以通过两种方式使用:

  • 为小部件生成头文件和源代码,以实现使用Qt Designer 3添加的任何自定义信号和插槽
  • 生成可与Qt Designer 4一起使用的新UI文件
您可以结合使用这两种方法来获取UI、头文件和源文件,这些文件可以作为将用户界面移植到Qt4的起点

uic3 myform.ui > myform.h
uic3 -impl myform.h myform.ui > myform.cpp
结果文件myform.h和myform.cpp使用QWidget实现Qt4中的表单,QWidget将包括UI文件中指定的自定义信号、插槽和连接。但是,有关此方法的限制,请参见下文

第二种方法是使用uic3将Qt Designer 3.ui文件转换为Qt Designer 4格式:

 uic3 -convert myform3.ui > myform4.ui
生成的文件myform4.ui可以在Qt Designer 4中编辑。表单的头文件由Qt4的uic生成。有关使用Qt Designer 4创建的表单的首选方法的信息,请参阅Qt Designer手册应用程序一章中的使用Designer UI文件

注意:uic3有以下限制:

将Qt3UI文件转换为Qt4有一些限制。最明显的限制是,由于uic不再生成QObject,因此无法为表单定义自定义信号或插槽。相反,程序员必须在主容器中定义这些信号和插槽,并在调用setupUi()后将它们连接到表单中的小部件。例如:

class HelloWorldWidget : public QWidget, public Ui::HelloWorld
{
 Q_OBJECT
 public:
 HelloWorldWidget(QWidget *parent = 0);

 public slots:
 void mySlot();
 };

 HelloWorldWidget::HelloWorldWidget(QWidget *parent)
 : QWidget(parent)
 {
  setupUi(this);

  QObject::connect(pushButton, SIGNAL(clicked()),
                  this, SLOT(mySlot()));
  }

  void HelloWorldWidget::mySlot()
  {
    ...
  }
 class HelloWorldWidget : public QWidget, public Ui::HelloWorld
 {
  Q_OBJECT

  public:
  HelloWorldWidget(QWidget *parent = 0);

  public slots:
  void on_pushButton_clicked();
  };

  HelloWorldWidget::HelloWorldWidget(QWidget *parent)
  : QWidget(parent)
  {
     setupUi(this);
  }

   void HelloWorldWidget::on_pushButton_clicked()
   {
       ...
   }
移植包含自定义信号和插槽的表单的一种快速而肮脏的方法是使用uic3而不是uic生成代码。由于uic3确实生成QWidget,因此它将使用UI文件中指定的自定义信号、插槽和连接填充它。但是,uic3只能从Qt3UI文件生成代码,这意味着这些UI文件永远不会被翻译,需要使用QtDesigner3进行编辑

还请注意,可以在表单中的小部件和主容器之间创建隐式连接。在setupUi()用子窗口小部件填充主容器后,它将扫描主容器的插槽列表,以查找具有\u objectName\u signalName()格式的名称

如果表单包含一个对象名为objectName的小部件,并且该小部件有一个名为signalName的信号,那么该信号将连接到主容器的插槽。例如:

class HelloWorldWidget : public QWidget, public Ui::HelloWorld
{
 Q_OBJECT
 public:
 HelloWorldWidget(QWidget *parent = 0);

 public slots:
 void mySlot();
 };

 HelloWorldWidget::HelloWorldWidget(QWidget *parent)
 : QWidget(parent)
 {
  setupUi(this);

  QObject::connect(pushButton, SIGNAL(clicked()),
                  this, SLOT(mySlot()));
  }

  void HelloWorldWidget::mySlot()
  {
    ...
  }
 class HelloWorldWidget : public QWidget, public Ui::HelloWorld
 {
  Q_OBJECT

  public:
  HelloWorldWidget(QWidget *parent = 0);

  public slots:
  void on_pushButton_clicked();
  };

  HelloWorldWidget::HelloWorldWidget(QWidget *parent)
  : QWidget(parent)
  {
     setupUi(this);
  }

   void HelloWorldWidget::on_pushButton_clicked()
   {
       ...
   }
由于命名约定,setupUi()自动将按钮的clicked()信号连接到HelloWorldWidget的on_Button_clicked()插槽

我从

获得了这个解决方案,Qt文档应该有东西给你吗?你查过了吗?Qt文档应该为您提供一些信息?你查过了吗?