2011-04-12 91 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/