如何以清晰的步骤使用qt3将qt4格式转换为uic3格式?
发布于 2015-08-24 09:23:46
Qt 4附带了用于处理旧的uic3文件的工具.ui。它可以通过两种方式使用:
一起使用。
您可以结合使用这两种方法来获得UI、头文件和源文件,在将用户界面移植到Qt 4时,可以使用这些文件作为起点。
uic3 myform.ui > myform.h
uic3 -impl myform.h myform.ui > myform.cpp生成的文件myform.h和myform.cpp使用QWidget实现Qt 4中的表单,该QWidget将包括UI文件中指定的自定义信号、插槽和连接。但是,有关此方法的局限性,请参见下面的内容。
第二种方法是使用uic3将3 .ui文件转换为4格式:
uic3 -convert myform3.ui > myform4.ui生成的文件myform4.ui可以在Qt 4中编辑。表单的头文件由Qt4的uic生成。有关使用Qt 4创建的表单的首选方法的信息,请参阅Qt手册应用程序一章中的“使用设计器UI文件”。
Note: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()
{
...
}一种快速而肮脏的方式来移植包含自定义信号和插槽的表单,就是使用uic3 (而不是uic )生成代码。因为uic3确实生成了一个QWidget,所以它将使用UI文件中指定的自定义信号、插槽和连接填充它。但是,uic3只能从Qt3UI文件生成代码,这意味着UI文件永远不会被翻译,需要使用Qt 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/那里得到了这个解决方案
https://stackoverflow.com/questions/5633434
复制相似问题