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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: подключение формы в qt  (Прочитано 27804 раз)
sinj
Гость
« : Май 19, 2009, 14:38 »

Доброго времени суток!

Стоит задача подключить форму, которую создал в designere и добавил в проект. Работаю в creatore. Не могу разобраться. Имеется файл form2.ui. Чего с ним дальше делать не знаю...
Записан
spirit
Гость
« Ответ #1 : Май 19, 2009, 15:08 »

открываем справку по Qt Designer в Qt Assistant и ищем раздела Using a Component in Your Application.
Записан
sinj
Гость
« Ответ #2 : Май 20, 2009, 09:02 »

Спасибо. Что-то нашел, но английский не знаю... А по русски нагуглить понятный пример не смог. Может кто-то поделится ссылкой?
Записан
spirit
Гость
« Ответ #3 : Май 20, 2009, 09:23 »

в общем так:
-- создаешь форму в Qt Designer;
-- подключаешь ее к проетку (нужно отредактировать pro-файл) добавив
Цитировать
HEADERS += <your_widget_name_which_use_a_ui>.h
FORMS += <your_form_name>.ui
HEADERS += <your_widget_name_which_use_a_ui>.cpp
your_widget_name_which_use_a_ui -- имя файла в котором будет использоваться ui;
your_form_name -- имя ui  файла.
-- создаешь файл, который будет использовать ui файл.
есть три варианта использование ui файла.
первый (множественное наследование).
Код
C++ (Qt)
#include "ui_myform.h"
#include <QWidget>
 
class MyWidget: public QWidget, private Ui::MyWidget
{
...
public:
   MyWidget(QWidget *parent = 0)
       :QWidget(parent)
   {
       setupUi(this);
   }
};
 
второй (использование члена-класса).
Код
C++ (Qt)
#include "ui_myform.h"
#include <QWidget>
 
class MyWidget: public QWidget
{
...
public:
   MyWidget(QWidget *parent = 0)
       :QWidget(parent)
   {
       m_ui.setupUi(this);
   }
 
private:
   Ui::MyWidget m_ui;
};
 
третий (использование указателя на форму в виде члена-класса).
h-file
Код
C++ (Qt)
#include <QWidget>
 
namespace Ui {
   class MyForm;
}
 
class MyWidget: public QWidget
{
...
public:
   MyWidget(QWidget *parent = 0);
   ~MyWidget();
 
private:
   Ui::MyWidget *m_ui;
};
cpp-file
[code=cpp]
#include "myform.h"
#include "ui_myform.h"
 
MyWidget::MyWidget(QWidget *parent)
   :QWidget(parent), m_ui(new Ui::MyForm())
{
   m_ui->setupUi(this);
}
 
MyWidget::~MyWidget()
{
   delete m_ui;
   m_ui = 0;
}
 

ПРИМЕЧАНИЕ: заголовочный файл формы генерируется автоматически при помощи uic
и поэтому он всегда начинается с ui_...h.[/code]
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Май 20, 2009, 09:26 »

Цитировать
Работаю в creatore.

А попробуйте без креатора обоитись.. и погуглите на предмет поиска книг в электронном виде по QT на русском языке
с ходу могу посоветовать:  
"QT4 : программирование QUI на С++"  Жасмин Бланшет, Марк Саммерфилд, КУДИЦ-ПРЕСС Москва, 2007
Записан

ArchLinux x86_64 / Win10 64 bit
sinj
Гость
« Ответ #5 : Май 20, 2009, 10:24 »

Разобрался. Спасибо.
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #6 : Май 24, 2009, 00:45 »

Код:
А попробуйте без креатора обоитись..
- а он то чем виноват?
Записан
sinj
Гость
« Ответ #7 : Май 25, 2009, 13:18 »

вы можете подсказать альтернативу креатору? Мне казалось, что он вполне удобный. Да и пока что более оптимальным кажется вариант использования этого средства разработки. Хочу еще попробовать qt на студии. Вручную, извините, пока писать не могу, т.к. проект большой. Да и вообще я только учусь.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Май 25, 2009, 15:17 »

обойтись без креатора в данном случае значит сделать ручками, там и про книги упоминание есть (тнкий намек, что в книгах написано как сделать ручками)
Записан
sinj
Гость
« Ответ #9 : Май 25, 2009, 20:57 »

И не пытаюсь спорить.  Дело в том, что есть ли смысл досконально тратить огромное количество времени на изучение, когда разработчики предоставили вполне понятный диалог, возможностей которого хватит для реализации задачи? Согласен с Вами, что необходимо сидеть и разбираться во всем досконально, но когда нет времени? Видимо поэтому написал в раздел для новичков, надеясь на помощь, а не рекомендацию подучить матчасть.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #10 : Май 25, 2009, 21:08 »

огромное количество времени == 3 часа на прочтение первых глав любой книги по qt. И да, время потратить стоит (в этом случае), так далеко не всё можно сделать из дизайнера (по крайней мере быстро и не ковыряя сам дизайнер).
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #11 : Май 26, 2009, 05:56 »

QtCreator - действительно хороший инструмент, наша команда перешла на него после долгой работы с KDevelop, но всякие там классы для форм я создаю вручную чтобы точно знать что там у меня есть и как называется, т.е. для более полного контроля, хотя креатор это тоже может. А вот всякие там коннекты с сигналами - только в коде т.к. это 100% более верный и контролируемый путь. Кроме того креатор и его втроенный дизайнер имеет ряд ошибок кот. например нет во внешнем QtDesigner.
Записан
EarlGray
Гость
« Ответ #12 : Октябрь 24, 2009, 16:35 »

Я тоже новичок, пока что от работы со встроенным дизайнером QtCreator'a явно плохие впечатления. Это следствие того, что я не умею работать в нём или следствие его неудобности? Найти примеры работы с ним почти нереально — почти все тьюториалы о чистом Qt и программировании интерфейса ручками. Но если есть графическое средство, наглядное. то зачем тратить кучу времени (особенно новичку, который часто создает новые учебные проекты) на создание азов?!
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Октябрь 24, 2009, 17:01 »

Я лично предпочитаю создавать формы в дизайнере а потом грузить их как ресурсы. Так я не имею "вражеского кода" но могу что-то править интерактивно. Ну а "программирование в QCreator" за пределами моего понимания Улыбающийся
Записан
mike_price
Гость
« Ответ #14 : Ноябрь 12, 2009, 07:09 »

Возьмём пример Бланшета во второй главе; прошу прощения за разжёванность, но мне надо понять один раз)
- создаём gotocelldialog.ui в Designer
- кидаем в папку с проектом где уже есть main.cpp:
Код:
#include <QApplication>
#include <QDialog>

#include "ui_gotocelldialog.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    Ui::GoToCellDialog ui;
    QDialog *dialog = new QDialog;
    ui.setupUi(dialog);
    dialog->show();

    return app.exec();
}

- создаём gotocell.pro
     qmake -project
- создаём проект для студии
     qmake -tp vcapp

В итоге файл ui_gotocelldialog.h не появляется?!

содержимое gotocell.pro:
Код:
TEMPLATE    = app
 FORMS       = gotocelldialog.ui
 SOURCES     = main.cpp
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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