2011-04-12 77 views
2

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

+2

http://doc.qt.nokia.com/latest/porting4-overview.html该解决方案的Qt文档应该有东西给你?你有没有检查过? – 2011-04-12 14:33:06

回答

0

Qt 4附带了用于处理旧的.ui文件的工具uic3。它可以以两种方式使用:

  • 要生成头文件和源代码的插件来实现任何自定义信号和槽使用Qt设计3.
  • 生成可与使用了全新的UI文件添加Qt设计4.

您可以使用这两种方法的组合,以获得可以移植你的用户界面,Qt的4

uic3 myform.ui > myform.h 
uic3 -impl myform.h myform.ui > myform.cpp 
时为起点使用的用户界面,头文件和源文件10

生成的文件myform.h和myform.cpp使用QWidget实现Qt 4中的表单,该QWidget将包含在UI文件中指定的自定义信号,插槽和连接。但是,请参阅下面了解此方法的局限性。

第二种方法是使用uic3到Qt设计3的.ui文件转换为Qt设计4格式:

uic3 -convert myform3.ui > myform4.ui 

产生的文件myform4.ui可以在Qt设计4.报头进行编辑表单文件由Qt 4的uic生成。请参阅使用设计UI文件中有关首选方式使用与Qt Designer创建4.

注意形式的信息的Qt设计手册您的应用程序章:有uic3的局限性:

转换Qt 3 UI文件到Qt 4有一些限制。最明显的限制是由于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() 
    { 
    ... 
    } 

一个快速和肮脏的方式来包含自定义信号和槽口形式是使用uic3,而不是UIC来生成代码。由于uic3确实生成了一个QWidget,它将使用UI文件中指定的自定义信号,插槽和连接来填充它。但是,uic3只能从Qt 3 UI文件生成代码,这意味着UI文件永远不会被翻译,需要使用Qt Designer 3进行编辑。

还要注意,可以在小部件之间创建隐式连接一个表格和主要容器。在setupUi()用子窗口小部件填充主容器后,它使用形式为on_objectName_signalName()的名称扫描主容器的插槽列表。

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

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()自动连接按钮的点击()信号HelloWorldWidget的on_pushButton_clicked()槽。

我从http://qt.developpez.com/doc/4.7/porting4-designer/

相关问题