Russian Qt Forum
Май 05, 2024, 04:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Генерирование cpp и из ui в QT-4.0.1  (Прочитано 6096 раз)
Trolltux
Гость
« : Ноябрь 05, 2005, 16:04 »

Здравствуйте.
Сразу скажу что использую я линукс.

В третьем QT из ui генерировались cpp и h.
Используя Designer можно было добавлять свои слоты, связывать их с сигналами, редактировать код...

Можно сказать что это была настоящая IDE, только без компилятора.
В 4-м QT Designer преднасначен уже только для создания форм.

Теперь если из ui сгенерировать код, то получится один cpp.
При этом он не будет описывать класс формы как это было в третьем. Там что-то идет с setupUi...

Короче очень непривычно.
---------------------------------------------
Можно ли генерировать из ui два файла: declaration и implementation?

То есть если создать пустую форму и сгенерировать cpp мы получим вот что:

Код:
were@WereHome /mine/projects/temp/testUI $ uic test.ui
#ifndef TEST_H
#define TEST_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QWidget>

class Ui_MainWindow
{
public:
    QWidget *centralWidget;

    void setupUi(QMainWindow *MainWindow)
    {
    MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
    MainWindow->resize(QSize(173, 128).expandedTo(MainWindow->minimumSizeHint()));
    centralWidget = new QWidget(MainWindow);
    centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
    MainWindow->setCentralWidget(centralWidget);
    retranslateUi(MainWindow);

    QMetaObject::connectSlotsByName(MainWindow);
    } // setupUi

    void retranslateUi(QMainWindow *MainWindow)
    {
    MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
    Q_UNUSED(MainWindow);
    } // retranslateUi

};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

#endif // TEST_H


А я хочу вот это:

form.h

Код:
#ifndef form_ui
#define form_ui

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QMainWindow>
#include <QtGui/QWidget>

class MainWindow
{
Q_OBJECT
public:
    //объявление виджетов

    void MainWindow();
    void retranslateUi();

    //объявление собственных слотов
};

#endif


form.cpp

Код:
#include "form.h"

void MainWindow::MainWindow(){

    this->setObjectName(QString::fromUtf8("MainWindow"));
    this->resize(QSize(173, 128).expandedTo(this->minimumSizeHint()));
    centralWidget = new QWidget(this);
    centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
    this->setCentralWidget(centralWidget);
    retranslateUi(this);

    QMetaObject::connectSlotsByName(this);
}

void MainWindow::retranslateUi({
    this->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
    Q_UNUSED(this);
}


PS Код компилироваться скорее всего не будет, не проверял.

Вы поняли мою идею?
Записан
Trolltux
Гость
« Ответ #1 : Ноябрь 05, 2005, 22:43 »

Вопрос снимается.
Все оказалось гораздо проще.
Записан
voron
Гость
« Ответ #2 : Ноябрь 14, 2005, 08:54 »

У меня возник такой же вопрос. Но мне до сих пор непонятно? Спасибо.
Записан
AlexKiriukha
Гость
« Ответ #3 : Ноябрь 14, 2005, 11:01 »

Посмотрите в документации к Designer'у. У меня это file:///usr/local/Trolltech/Qt-4.0.1/doc/html/designer-using-a-component.html
Записан
Ggg_old
Гость
« Ответ #4 : Ноябрь 15, 2005, 18:11 »

После прочтени  file:///usr/local/Trolltech/Qt-4.0.1/doc/html/designer-using-a-component.html
так-как опыт в QT отсутствует, давлеет тяжкое наследие borland, то возникло пару вопросов:
1.Использование автосоединение сигнал-слот:
void on_<widget name>_<signal name>(<signal parameters>);
В каких случаях лучше присенять его, а в каких случаях все делать руками. В общем, у кого какой опыт.
2. Сабклассинг формы: описываются два варианта:
-прямое наследование от ui_класса,
-включение ui_ объекта внутрь класса.
В статье указывается фактор, который может повлиять выпор в пользу второго варианта: We can use this method to define a number of user interfaces within the same widget, each of which is contained within its own namespace, and overlay (or "compose") them. This approach can be used to create individual tabs from existing forms, for example.
Первый вариант таким преимуществом не обладает, но проще в использовании.
Опять таки на чем лучше остановится на первоначальном этапе, кто что чаще использует.
3. Основной объем работы по бизнес коду формы ложится на код писанный руками. Получается, что определенные в дизайнере несколько простейших соединений сигнал-слот, практичеси не несут никакой бизнес функции в программе и их можно без особого ущерба времени определить руками. Напрашивается вопрос - насколько полезен редактор соединений дизайнера в реальной практике?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.