Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: bob от Сентябрь 01, 2005, 23:35



Название: Использование файлов с расширением ui
Отправлено: bob от Сентябрь 01, 2005, 23:35
Использую Qt 4.0.1. Создал форму, наследник от QMainWindow сохранил как myform.ui. Как теперь ее использовать в проекте? Я так понимаю, что компилятор должен сам создать файл заголовка и срр-файл. Под Linux в Qt 3.Х так вроде и есть. А вот под Windows в Qt 4.0.1 увы не получается. :cry: Может я чего-то не то делаю:
1. qmake -project
2. qmake -o Makefile AnyName.pro  или (qmake AnyName.pro)
3. make


Название: Использование файлов с расширением ui
Отправлено: nEoN от Сентябрь 02, 2005, 08:20
Должен быть сгенерирован файл ui_myform.h.
Используется это так :
Код:
#include "ui_myform.h"
class MainWindow: public QMainWindow
{
public:
  Ui::myform ui; // myform - это значение свойства objectName (QMainWindow) в Qt дизайнере
  MainWindow()
  {
    ui.setupUi(this);
  }
};


Название: Использование файлов с расширением ui
Отправлено: bob от Сентябрь 02, 2005, 08:32
А чем генерировать h-файл? срр-файл, как я понял для формы не обязателен?


Название: Использование файлов с расширением ui
Отправлено: nEoN от Сентябрь 02, 2005, 09:21
Файл ui_myform.h генерирует Qt-шная утилита uic. Если ты компилируешь проект через Makefile, то в нём должен быть её вызов.
Посмотри содержимое  своего проекта AnyName.pro, там должна быть строка FORMS = myform.ui. Если её нет, то соответственно и в Makefile вызов uic не попадает.


Название: Использование файлов с расширением ui
Отправлено: Racheengel от Сентябрь 02, 2005, 09:23
По идее, это делает uic автоматом при компиляции формы.


Название: Использование файлов с расширением ui
Отправлено: GrolfCry от Сентябрь 02, 2005, 10:30
Цитата: "nEoN"
Должен быть сгенерирован файл ui_myform.h.
Используется это так :
Код:
#include "ui_myform.h"
class MainWindow: public QMainWindow
{
public:
  Ui::myform ui; // myform - это значение свойства objectName (QMainWindow) в Qt дизайнере
  MainWindow()
  {
    ui.setupUi(this);
  }
};


Мне вот интересно почему все повторяют на мой взгляд ошибку (или по крайней мере мне так не удобно)  из компьютерры объявляя ui внутри класса, хотя можно писать (а доке троллей так именно и написано)
Код:

class FrmLockImpl : public QMainWindow, public Ui::frmLock

тогда отпадает необходимость писать префикс ui  для доступа к объектам на форме  и при вызове setupUi


Название: Использование файлов с расширением ui
Отправлено: nEoN от Сентябрь 02, 2005, 10:42
Я бы не стал называть это ошибкой. Мне например удобнее обращаться к элементам диалога через ui.lineEdit1, а к свойством самого класса без префиксов. Это позволяет наглядно разделить GUI от реализации логики.


Название: Использование файлов с расширением ui
Отправлено: Admin от Сентябрь 02, 2005, 11:00
Я уже кидал линк на простенькую статью для тех кто переезжает с QT3 на QT4