Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Wander от Октябрь 26, 2008, 22:32



Название: Как подключить готовую сделанную мной форму к исходнику
Отправлено: Wander от Октябрь 26, 2008, 22:32
Ребят !
Извените меня - но уж помогите.

Почитал я все что советовали - попробовал
Все получается вроде - виджеты создаются - если создаю все в текстовом редакторе.
В QT Designer - тоже вроде на начальном уровне разобрался - интерфейс строиться - все что хочу меняется (пока).

Но во всех мануалах показывают как делать формы прямо в текстовом редакторе - ну да это выходит, а вот как подключить готовую сделанную мной форму к исходнику - нигде не написано. Я бьюсь-бьюсь - ну не получается - злость берет  >:(

Ведь когда форма готова - то намного ж быстрее все идет.

Может кому-то не будет тяжело - сделайте мне небольшой исходничек с формой.ui и допустим что б я видел как делать реакцию на событие кнопки - ну там по нажатию добавить другой текст на лейбл или что-то в том роде.
Ну что я могу сказать - ну привык я к этим полноценным студиям разработки где еще и подсказочки по коду вылетают  :)  - а тут теряюсь.

Спасибо !
 


Название: Re: sources
Отправлено: ритт от Октябрь 26, 2008, 22:44
"полноценные студии" - это делфи, что ли?
по теме: в дизайнере есть опция меню "form" -> "view code..." - чем не минимальный пример?


Название: Re: sources
Отправлено: denka от Октябрь 26, 2008, 22:51
Читай тут http://doc.trolltech.com/4.4/designer-using-a-component.html (http://doc.trolltech.com/4.4/designer-using-a-component.html)


Название: Re: sources
Отправлено: lit-uriy от Октябрь 27, 2008, 00:51
а вот как подключить готовую сделанную мной форму к исходнику - нигде не написано. Я бьюсь-бьюсь - ну не получается - злость берет  >:(
Файлы ui преобразуются с помощью uic в С++исходник.
Который ты подключаешь к своей программе. Способов есть несколько, в асистенте все описаны. Я в основном использую множественное наследование. Для этого нужно в pro-файл добавить строчку типа:
FORMS   += myform.ui
А затем создать класс с наследованием от какого нибудь Qt'явого класса и твоей формы. Т.к. лениво мне это было делать руками сваял себе програмулину, см. её здесь (http://www.forum.crossplatform.ru/index.php?showtopic=769)


Ведь когда форма готова - то намного ж быстрее все идет.

Может кому-то не будет тяжело - сделайте мне небольшой исходничек с формой.ui и допустим что б я видел как делать реакцию на событие кнопки - ну там по нажатию добавить другой текст на лейбл или что-то в том роде.
В дизайнере можно соеденять сигналы и слоты объектов. Если даного недостаточно, то при использовании множественного наследования (см. выше) ты обращаешся в созданном классе к виджетам напрямую. Например, на форме у тебя есть кнопка которую ты назвал "mybtn" и надо установить из программы в ней текст, то делаешь так:
mybtn->setText(tr("mytext"));


Название: Re: sources
Отправлено: pastor от Октябрь 27, 2008, 15:09
Я бы посоветовал бы использовать в своих преложениях не множественное наследование (Multiple Inheritance Approach), а  Single Inheritance Approach с небольшой модификацией.

Пимер:

// *.h

Код:
namespace Ui{
    class YuorClassName;
};

class SomeClass : public SomeBaseClass
{
private:
    Ui::YuorClassName *m_ui;
};

// *.cpp

Код:
#include "ui_yourclassname.h"

SomeClass::SomeClass(QWidget *parent)
    : SomeBaseClass(parent)
{
    m_ui = new Ui::YuorClassName;
    m_ui->setupUi(this);
}

SomeClass::~SomeClass()
{
    delete m_ui;
    m_ui = 0;
}


Такой подход дает существенный выигрыш при сборке проекта, когда изменяеться какая либо UI. Это особо важно для болших проектов (проверено на собственном опыте).


Название: Re: sources
Отправлено: lit-uriy от Октябрь 27, 2008, 17:55
2 pastor, создание пространства имен Ui не нужно, в ui_***.h он уже есть


Название: Re: sources
Отправлено: pastor от Октябрь 27, 2008, 17:57
2 pastor, создание пространства имен Ui не нужно, в ui_***.h он уже есть

А где я его создал?

Код:
namespace Ui{
    class YuorClassName;
};

Это forward declaration