Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt инструментарий _ QT 4.5.2 / Qt Creator 1.2.1 обработка событий , зависимость форм .

Автор: Gman 29.9.2009, 9:38

Создал новое Gui приложение приложение и форму mainwindow.ui все по дефолту креэйтором , создал на форме mainwindow.ui с помощью дизайнера кнопки , поля ввода и другие виджеты , как сделать так что бы при нажатие на кнопки и т.д производильсь определенные действия например как в Delphi ????
И как делать зависимость форм ?

Если не трудно напишите или перевидите документацию по QT Creator ,информации на русском почти нет для этой IDE =\ , можно даже статьи с картинками как что делать можно . QDevelop вобще темный лес .

Автор: nZil 29.9.2009, 14:13

вот http://www.youtube.com/view_play_list?p=22E601663DAF3A14 туториалы по QtCreator'у.
Наверное все книги по Qt на русском содержат небольшое описание QtCreator'а.

ой ошибочка... в книгах описание Designer'а. Вообще процесс создания форм и обработки базовых сигналов у криэйтора и дизайнера одинаковый. Так что юзай книги)

Автор: Gman 30.9.2009, 23:06

Я разобрался вот ролик как делать обработку событий : http://www.youtube.com/watch?v=c0HkTtUNxrw , Народ Напишите по этому делу мини хэлп плиз !!!!! , не всем же понятно , все подробней опишите в плане написания кода

Автор: Litkevich Yuriy 1.10.2009, 6:02

Цитата(Gman @ 1.10.2009, 3:06) *
Народ Напишите по этому делу мини хэлп плиз !!!!! , не всем же понятно , все подробней опишите в плане написания кода
вот возьми и напиши. У нас для этого и Вики имеется, http://www.wiki.crossplatform.ru/index.php/Справка:Справка.

Автор: Gman 3.10.2009, 19:15

Есть форма dialog с кнопками и текстом (QDialog) , почему его надо каждый раз объевлять ?

Раскрывающийся текст
Dialog dialog;
и при вызове формы dialog , не отображаются кнопки и текст ?
main.cpp
Раскрывающийся текст
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QSplashScreen>
#include "dialog.h"
#include "ui_dialog.h"

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


QApplication a(argc, argv);

MainWindow w;
w.show();
Dialog dialog;
a.connect(&w,SIGNAL(clicked()),&dialog,SLOT(showdialog()));

return a.exec();
}


Описание слота :
Раскрывающийся текст
int MainWindow::showdialog()

{
Dialog dialog;
dialog.exec();
return 0;
}

Автор: Litkevich Yuriy 3.10.2009, 20:00

Цитата(Gman @ 3.10.2009, 23:15) *
почему его надо каждый раз объевлять ?
не понятно очём речь, а приведённый код ещё большую непонятность создаёт.

Автор: Gman 3.10.2009, 20:27

Есть два окна главное и диалоговое , диалоговое вызывается из главного путем сигнала click , но не отображаться правильно как в должно быть в дизайнере . Вопрос про объединении форм .

 

Автор: Litkevich Yuriy 3.10.2009, 22:56

Цитата(Gman @ 3.10.2009, 23:15) *
почему его надо каждый раз объевлять ?
Цитата(Gman @ 4.10.2009, 0:27) *
диалоговое вызывается из главного
Диалоговые окна, модальные, создаются именно так, как у тебя написано в слоте int MainWindow::showdialog()
В функции main он бессмысленен, упоминание его (include) тоже не нужно. Соответственно и соединение в ней тоже не нужно.
В классе MainWindow сигнала clicked наверняка нет.

Диалог должен быть известен главному окну, т.е. в нём должен быть соответствующий include.
Тебе необходимо соеденить сигнал какого либо объекта (находящегося в главном окне) со слотом int MainWindow::showdialog(). И сделать это нужно в конструкторе главного окна (самое подходящее место)



Цитата(Gman @ 29.9.2009, 13:38) *
QDevelop вобще темный лес .
он, кстати, проще чем креатор.

Автор: Gman 10.10.2009, 0:40

Как создать окно без рамки и как реализовать метод exec для MainWindow , что бы окно MainWindow не исчезало ?

Автор: Andrewshkovskii 10.10.2009, 0:55

Без рамки : QMainWindow ( QWidget * parent = 0, Qt::WindowFlags flags = 0 ) , указать WindowFlags как Qt::FramelessWindowHint . Что значит что бы не исчезало?

Автор: Gman 10.10.2009, 1:17

 void  Frame::showMainWindow()
{

MainWindow h;
h.show();

}

Только нажатие на кнопку т.е сигнала clicked будет показано гавное , MainWindow , на то что бы главное окно оставалось открытым после нажатия на кнопку , а не закрывалось .

Автор: Andrewshkovskii 10.10.2009, 1:31

Не понятно все равно. спрятать окно что ли?

Автор: Litkevich Yuriy 10.10.2009, 6:59

Цитата(Gman @ 10.10.2009, 5:17) *
MainWindow h;
h.show();
Переменная MainWindow локальная для этой функции, как только из функции выйдешь она прекратит своё существование. (Это из области языка "Си", ещё до плюсов)

Автор: Gman 10.10.2009, 12:37

MainWindow это класс , h - объект класса MainWindow , show() метод , а указатель на объект h создать не возможно , и как соединить с mai.cpp хз =\

Автор: Litkevich Yuriy 10.10.2009, 12:54

Цитата(Gman @ 10.10.2009, 16:37) *
а указатель на объект h создать не возможно
поясни

Автор: Andrewshkovskii 10.10.2009, 13:27

создать указатель на h:

MainWindow *ph = &h;


Что значит соединить с main.cpp? Мне кажется, у тебя проблемы с языком (программирования) в плане теории.

Автор: Gman 10.10.2009, 15:05

Мне нужно функции showMainWindow передать значение h; метод showMainWindow это медот класса Frame . Наоборот в простом С++ это проще сделать . Меня , что то не доходит как объекты одного класса передавать другому , что бы был один и тот же объект .

void Frame::showMainWindow(void)
{

void show();


}

Как в эту функции передать h (из MAinWIndow h; т.е объект h класса MainWindow ) ? В С++ я бы создал конструктор с параметрами и эти параметры передал бы методу show , если наследовать один класс от другого получиться ересть ,




Автор: Litkevich Yuriy 10.10.2009, 15:11

Цитата(Gman @ 10.10.2009, 19:05) *
В С++ я бы создал конструктор с параметрами и эти параметры передал бы методу show , если наследовать один класс от другого получиться ересть ,
Qt написана C++.

Лучше расскажи основной замысел программы. А то ты как-то непонятно делаешь.
Изначально ты пытался использоватьQDialog и делал это неверно.
Потом окно без рамки
Тепрь какой-то Frame лишь водной функции которого ты создаёшь главное окно приложения и убиваешь его по выходу из функции.

По моему разумению это три раные темы, и ни как не связанны с заголовком "Qt Creator 1.2.1 обработка событий"

Автор: Andrewshkovskii 10.10.2009, 15:25

Тебе надо передать указатель на объект в функцию (ну или его копию..) :

void Frame::showMainWindow(MainWindow * h)
{
h->show();
}

Автор: Gman 10.10.2009, 15:27

Связано , я создаю кнопку или другой элемент управления , прикрепляю к нему сигнал , описываю слот , проблема идет в описании слота . Мне нужно окон с кнопкой запуска окна MainWindow и всё , и разобраться с передаче

Автор: Andrewshkovskii 10.10.2009, 15:42

Ты лучше свои вопросы нормально формулируй, а то тебя понять сложно.Тебе удалось передать свой объект в слот?

Автор: Litkevich Yuriy 10.10.2009, 17:14

Вот тестовый пример  tst.zip ( 3 килобайт ) : 141

Автор: Gman 10.10.2009, 17:15

Мне нужна форма без рамки т.е форма заставка с кнопкой запуск которая будет запускать MainWindow т.е главное окно , объект в слот не передается , приходиться загонов в описании слота объявлять объект класса MainWindow ,или других классов , для QDialog есть такой метод exec() , в аттач прикрепил свой проект , вопрос идиотский но решения нет у меня =\ спс за помощь.

 Proga.zip ( 14.86 килобайт ) : 57
 

Автор: Litkevich Yuriy 10.10.2009, 17:29

Цитата(Gman @ 10.10.2009, 21:15) *
Мне нужна форма без рамки
Пёс сней с рамкой, ты с начала с базовыми вещами разберись, потом марафет наводить будешь.

поправил твой проект, помоему работает как и планировалось.
 Proga.zip ( 5.32 килобайт ) : 146


П.С. смотри коментарии

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)