шаги для преобразования qt3 в qt4 - PullRequest
2 голосов
/ 12 апреля 2011

как я могу преобразовать формат qt3 в формат qt4, используя uic3, за четкие шаги?

1 Ответ

0 голосов
/ 24 августа 2015

Qt 4 поставляется с инструментом uic3 для работы со старыми файлами .ui.Его можно использовать двумя способами:

  • Для создания заголовков и исходного кода для виджета для реализации любых пользовательских сигналов и слотов, добавленных с использованием Qt Designer 3.
  • Для создания нового пользовательского интерфейсафайл, который можно использовать с Qt Designer 4.

Вы можете использовать оба этих метода в комбинации для получения UI, заголовочных и исходных файлов, которые вы можете использовать в качестве отправной точки при портировании вашего пользовательского интерфейса на Qt4.

uic3 myform.ui > myform.h
uic3 -impl myform.h myform.ui > myform.cpp

Полученные файлы myform.h и myform.cpp реализуют форму в Qt 4, используя QWidget, который будет включать пользовательские сигналы, слоты и соединения, указанные в файле UI.Однако об ограничениях этого метода см. Ниже.

Второй метод заключается в использовании uic3 для преобразования файла QT Designer 3 .ui в формат Qt Designer 4:

 uic3 -convert myform3.ui > myform4.ui

результирующий файл myform4.ui можно редактировать в Qt Designer 4. Файл заголовка для формы генерируется с помощью Qt 4.Смотрите информацию об предпочтительных способах использования форм, созданных с помощью Qt Designer 4, в главе «Использование файла пользовательского интерфейса дизайнера в вашем приложении» в Руководстве по Qt.

Примечание : существуют ограничения uic3:

Преобразование файлов пользовательского интерфейса Qt 3 в 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, что означает, что файлы пользовательского интерфейса никогда не переводятся и их необходимо редактировать с помощью 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 () автоматически подключает сигнал clickButton () clickButton к слоту on_pushButton_clicked () HelloWorldWidget.

Я получил это решение от http://qt.developpez.com/doc/4.7/porting4-designer/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...